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. Cloud SDK をインストールして初期化します。
  6. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

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

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

    API を有効にする

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

カスタム役割の作成

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

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

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

  2. [サービス アカウントを作成] をクリックしてプロジェクトを選択し、以下の項目を入力します。

      1. サービス アカウント名: 「workflow-scheduler」
      2. サービス アカウント ID: 「workflow-scheduler@your-project-id.iam.gserviceaccount」(先頭部分は自動入力されています)
      3. サービス アカウントの説明: Optional description
        1. [作成] をクリックします。
        2. ロール: 前の手順で作成した Dataproc Workflow Template Create カスタムロールを選択します。[続行] をクリックします。
        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. "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... サービス アカウントの左側にあるボックスを選択して、[削除] をクリックします。

    次のステップ