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

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

  • Dataproc
  • Compute Engine
  • Cloud Scheduler

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

準備

プロジェクトを設定する

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  4. Dataproc, Compute Engine, and Cloud Scheduler API を有効にします。

    API を有効にする

  5. Google Cloud CLI をインストールして初期化します。
  6. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  7. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  8. Dataproc, Compute Engine, and Cloud Scheduler API を有効にします。

    API を有効にする

  9. Google Cloud CLI をインストールして初期化します。

カスタム役割の作成

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

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

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

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

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

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

  4. [サービス アカウント名] フィールドに workflow-scheduler という名前を入力します。 Cloud Console は、この名前に基づいて [サービス アカウント 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. Cloud Console の [Dataproc ワークフロー] ページで sparkpi 名をクリックし、[ワークフロー テンプレートの詳細] ページを開きます。sparkpi テンプレートの各属性を確認します。

Cloud Scheduler ジョブを作成する

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

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

    1. リージョンを選択: 「us-central」など、ワークフロー テンプレートを作成したリージョン。
    2. 名前: 「sparkpi」
    3. 頻度: 「* * * * *」は毎分、「0 9 * * 1」は毎週月曜日の午前 9 時を意味します。Unix の他の cron 値については、ジョブ スケジュールの定義をご覧ください。注: Cloud Console で、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
        
      3. 範囲: この項目は無視できます。
    9. [作成] をクリックします。

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

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

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

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

クリーンアップ

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

プロジェクトの削除

  1. Cloud Console で [リソースの管理] ページに移動します。

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

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

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

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

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

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

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

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

次のステップ