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

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

  • Dataproc
  • Compute Engine
  • Cloud Scheduler

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

プロジェクトを設定する

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    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. ワークフローを実行するには、マネージド単一ノードクラスタを使用します。Dataproc によってクラスタが作成され、ワークフローがクラスタ上で実行され、ワークフローの完了時にクラスタが削除されます。

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

  4. Google Cloud コンソールの [Dataproc ワークフロー] ページで sparkpi 名をクリックし、[ワークフロー テンプレートの詳細] ページを開きます。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 は、Dataproc の 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. Cloud Scheduler の [ジョブ] ページの sparkpi ジョブの行で、[今すぐ実行] をクリックします。

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

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

クリーンアップ

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

プロジェクトの削除

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

ワークフロー テンプレートの削除

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

Cloud のスケジュールされたジョブの削除

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

サービス アカウントの削除

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

次のステップ