Cloud Scheduler を使用するワークフロー

このドキュメントでは、課金対象である次のコンポーネントを使用します。 Google Cloud

  • Dataproc
  • Compute Engine
  • Cloud Scheduler

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。

新規の Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

プロジェクトを設定する

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Google Cloud CLI をインストールします。

  6. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  7. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Google Cloud CLI をインストールします。

  12. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  13. gcloud CLI を初期化するには、次のコマンドを実行します:

    gcloud init

カスタムロールの作成

  1. Google Cloud コンソールで [IAM と管理] → [ロール] ページを開きます。
    1. [ロールを作成] をクリックして [ロールの作成] ページを開きます。
    2. [タイトル]、[説明]、[ID]、[ロールのリリース段階] の各項目を入力します。提案: ロールのタイトルとして「Dataproc ワークフロー テンプレートの作成」を使用します。
    3. [権限の追加] をクリックします。
      1. [権限の追加] フォームで [フィルタ] をクリックし、[権限] を選択します。フィルタを入力して [権限: dataproc.workflowTemplates.instantiate] を読み取ります。
      2. 一覧表示されている権限の左側にあるチェックボックスをオンにして、[追加] をクリックします。
    4. [ロールの作成] ページで、再度 [権限の追加] をクリックし、前の追加手順を繰り返して iam.serviceAccounts.actAs 権限をカスタムロールに追加します。[ロールの作成] ページに 2 つの権限が表示されるようになりました。
    5. [ロールの作成] ページで [作成] をクリックします。カスタムロールが [ロール] ページに表示されます。

サービス アカウントを作成する

  1. Google Cloud コンソールで、[サービス アカウント] ページに移動します。

    [サービス アカウント] に移動

  2. プロジェクトを選択します。

  3. [サービス アカウントを作成] をクリックします。

  4. [サービス アカウント名] フィールドに workflow-scheduler という名前を入力します。 Google Cloud コンソールでは、この名前に基づいて [サービス アカウント ID] フィールドの値が設定されます。

  5. 省略可: [サービス アカウントの説明] フィールドに、サービス アカウントの説明を入力します。

  6. [作成して続行] をクリックします。

  7. [ロールを選択] フィールドをクリックし、前の手順で作成した Dataproc ワークフロー テンプレートの作成カスタムロールを選択します。

  8. [続行] をクリックします。

  9. [サービス アカウント管理者ロール] フィールドに、Google アカウントのメールアドレスを入力します。

  10. [完了] をクリックして、サービス アカウントの作成を完了します。

ワークフロー テンプレートを作成する

ローカル ターミナルウィンドウまたは Cloud Shell で以下に表示されているコマンドをコピーして実行し、ワークフロー テンプレートを作成して定義します。

注:

  • このコマンドでは、「us-central1」リージョンを指定しています。以前に gcloud config set compute/region を実行してリージョン プロパティを設定した場合は、別のリージョンを指定するか、--region フラグを削除できます。
  • add-job コマンドの「-- 」(ダッシュ ダッシュ スペース)の並びにより、1000 引数が SparkPi ジョブに渡されます。この引数は、円周率の値を推定するために使用するサンプルの数を指定するものです。

  1. ワークフロー テンプレートを作成します。
    gcloud dataproc workflow-templates create sparkpi \
        --region=us-central1
    
  2. Spark ジョブを Sparkpi ワークフロー テンプレートに追加します。step-id の「compute」は必須で、追加された SparkPi ジョブを識別します。
    gcloud dataproc workflow-templates add-job spark \
        --workflow-template=sparkpi \
        --step-id=compute \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        --region=us-central1 \
        -- 1000
    

  3. ワークフローを実行するには、 マネージド単一ノード クラスタを使用します。Managed Service for Apache Spark によってクラスタが作成され、ワークフローがクラスタ上で実行され、ワークフローの完了時にクラスタが削除されます。

    gcloud dataproc workflow-templates set-managed-cluster sparkpi \
        --cluster-name=sparkpi \
        --single-node \
        --region=us-central1
    

  4. コンソールの Managed Service for Apache Spark の [**ワークフロー**] ページで sparkpi 名をクリックし、[**ワークフロー テンプレートの詳細**] ページを開きます。 Google Cloud sparkpi テンプレートの各属性を確認します。

Cloud Scheduler ジョブを作成する

  1. Google Cloud コンソールで Cloud Scheduler ページを開きます(ページを開くには、プロジェクトの選択が必要な場合があります)。[ジョブを作成] をクリックします。

  2. 次のジョブ情報を入力または選択します。

    1. リージョンを選択: 「us-central」など、ワークフロー テンプレートを作成したリージョン。
    2. 名前: 「sparkpi」
    3. 頻度: 「* * * * *」は毎分、「0 9 * * 1」は毎週月曜日の午前 9 時を意味します。Unix の他の cron 値については、ジョブ スケジュールの定義をご覧ください。注: Google Cloud コンソールで、Cloud Scheduler の [ジョブ] にある [今すぐ実行] ボタンをクリックすると、設定したジョブを実行する頻度に関係なく、ジョブを実行してテストできます。
    4. タイムゾーン: timezone を選択します。「アメリカ合衆国」と入力すると、米国のタイムゾーンが表示されます。
    5. ターゲット: 「HTTP」
    6. URL: your-project-id を挿入してから、以下の URL を挿入します。ワークフロー テンプレートを別のリージョンに作成した場合は、「us-central1」を置き換えます。この URL は、 Managed Service for Apache Spark workflowTemplates.instantiate API を呼び出して、sparkpi ワークフロー テンプレートを実行します。
      https://dataproc.googleapis.com/v1/projects/your-project-id/regions/us-central1/workflowTemplates/sparkpi:instantiate?alt=json
      
    7. HTTP メソッド:
      1. "POST"
      2. Body: 「{}」
    8. Auth ヘッダー:
      1. "Add OAuth token"
      2. サービス アカウント: このチュートリアルで作成したサービス アカウントservice account address を挿入します。your-project-id を変えて次のアカウント アドレスを使用できます。
        workflow-scheduler@your-project-id.iam.gserviceaccount.com
        
      3. 範囲: この項目は無視できます。
    9. [作成] をクリックします。

スケジュールされたワークフロー ジョブをテストする

  1. sparkpi ジョブの行で、 Cloud Scheduler [ジョブ] ページの [今すぐ実行] をクリックします。

  2. 数分待った後、Managed Service for Apache Spark [Workflows] ページを開いて、 sparkpi ワークフローが完了したことを確認します。

  3. ワークフローがマネージド クラスタを削除すると、ジョブの詳細が コンソールに Google Cloud 表示されます。Managed Service for Apache Spark [ジョブ] ページに表示されている compute... ジョブをクリックして、ワークフロー ジョブの詳細を表示します。

クリーンアップ

このチュートリアルのワークフローでは、ワークフローが完了するとマネージド クラスタが削除されます。ワークフローを維持すると、ワークフローを再実行できます。料金は発生しません。このチュートリアルで作成した他のリソースを削除して、繰り返しコストが発生しないようにすることが可能です。

プロジェクトを削除する

  1. コンソールで [**リソースの管理**] ページに移動します。 Google Cloud

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、 [Shut down] をクリックしてプロジェクトを削除します。

ワークフロー テンプレートを削除する

gcloud dataproc workflow-templates delete sparkpi \
    --region=us-central1

Cloud Scheduler ジョブを削除する

Google Cloud コンソールで Cloud Scheduler の [ジョブ] ページを開き、sparkpi 関数の左側にあるボックスをオンにして、[削除] をクリックします。

サービス アカウントを削除する

Google Cloud コンソールで [IAM と管理] → [サービス アカウント] ページを開き、workflow-scheduler... サービス アカウントの左側にあるボックスを選択して、[削除] をクリックします。

次のステップ