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

準備

プロジェクトを設定する

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

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

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

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

    API を有効にする

  5. Cloud SDK をインストールして初期化します。

カスタム役割の作成

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

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

  1. Cloud Console で[IAM と管理]→[サービス アカウント]ページを開きます。

  2. [サービス アカウントを作成] をクリックし、次の項目を入力します。

      1. サービス アカウント名: 「workflow-scheduler」
      2. サービス アカウント ID: 「workflow-scheduler@your-project-id.iam.gserviceaccount」(先頭部分は自動入力されています)
      3. サービス アカウントの説明: Optional description
        1. [作成] をクリックします。
        2. ロール: dataproc.workflowTemplates.instantiate 権限を持つカスタムロールを選択します。
        3. ユーザーにこのサービス アカウントへのアクセスを許可:
          1. サービス アカウント ユーザーロール: この項目は無視してかまいません。
          2. サービス アカウント管理者ロール: Insert your Google account email address
        4. キーを作成: この項目は無視してかまいません。
        5. [完了] をクリックします。

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

    ローカル ターミナルウィンドウまたは 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. 「OAuth トークンを追加」
        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 Schedule ジョブの削除

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

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

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

    次のステップ