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. Google Cloud プロジェクトで課金が有効になっていることを確認します

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

    API を有効にする

  5. Google Cloud CLI をインストールします。
  6. gcloud CLI を初期化するには:

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

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

  8. Google Cloud プロジェクトで課金が有効になっていることを確認します

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

    API を有効にする

  10. Google Cloud CLI をインストールします。
  11. gcloud CLI を初期化するには:

    gcloud init

カスタムの役割を作成する

  1. Google Cloud コンソールで [IAM と管理] → [ロール] ページを開きます。
    1. [ロールを作成] をクリックして [ロールの作成] ページを開きます。
    2. [タイトル]、[説明]、[ID]、[ロールのリリース段階] の各項目を入力します。提案: ロールのタイトルとして「Dataproc ワークフロー テンプレートの作成」を使用します。
    3. [権限を追加] をクリックします。
      1. [権限の追加] フォームで、[フィルタ] をクリックして [権限] を選択します。フィルタを完成させて、「Permission: 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
        
      3. 範囲: この項目は無視できます。
    9. [作成] をクリックします。

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

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

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

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

クリーンアップ

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

プロジェクトの削除

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

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

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

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

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

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

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

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

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

次のステップ