ワークフローの使用

次のようにして、ワークフローを設定して実行します。

  1. ワークフロー テンプレートを作成する
  2. マネージド(エフェメラル)クラスタを構成するか、既存のクラスタを選択する
  3. ジョブを追加する
  4. テンプレートをインスタンス化してワークフローを実行する

テンプレートの作成

gcloud コマンド

次の command を実行して、Cloud Dataproc ワークフロー テンプレート リソースを作成します。

gcloud dataproc workflow-templates create template-id (such as "my-workflow")

REST API

workflowTemplates.create をご覧ください。完成済みの WorkflowTemplate は、workflowTemplates.create リクエストによって送信されます。

Console

GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

クラスタの構成または選択

Cloud Dataproc では、ワークフロー用の新しい「マネージド」クラスタを作成することも既存のクラスタを使用することもできます。

  • 既存のクラスタ: ワークフローでのクラスタ セレクタの使用を確認して、ワークフローに応じて既存のクラスタを選択します。

  • マネージド クラスタ: ワークフローに応じてマネージド クラスタを構成する必要があります。Cloud Dataproc により、ワークフロー ジョブを実行するための新しいクラスタが作成されます。ワークフローが終了すると、そのクラスタは削除されます。
    gcloud コマンドライン ツールまたは Cloud Dataproc API を使用すると、ワークフローのマネージド クラスタを構成できます。

    gcloud コマンド

    gcloud dataproc cluster create から継承したフラグを使用して、マネージド クラスタ(ワーカー数、マスター / ワーカー マシンタイプなど)を構成します。Cloud Dataproc は、一意性を確保するために、クラスタ名に接尾辞を追加します。

    gcloud dataproc workflow-templates set-managed-cluster template-id \
        --master-machine-type machine-type \
        --worker-machine-type machine-type \
        --num-workers number \
        --cluster-name cluster-name
    

    REST API

    WorkflowTemplatePlacement.ManagedCluster をご覧ください。このフィールドは、workflowTemplates.create または workflowTemplates.update リクエストによって送信された、完成済みの WorkflowTemplate の一部として提供されます。

    Console

    GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

テンプレートにジョブを追加する

1 つ以上のジョブ依存関係を指定しない限り、すべてのジョブは同時に実行されます。ジョブの依存関係は、その他のジョブのリストとして表されます。これらのジョブは、最終的なジョブを開始する前に完了しておく必要があります。ジョブごとに step-id を指定する必要があります。この ID はワークフロー内で一意である必要がありますが、グローバルに一意である必要はありません。

gcloud コマンド

gcloud dataproc jobs submit から継承したジョブタイプとフラグを使用して、テンプレートに追加するジョブを定義します。オプションで ‑‑start-after job-id of another workflow job フラグを使用して、ワークフロー内の他のジョブが完了してから目的のジョブが開始されるようにすることもできます。

例:

Hadoop ジョブ「foo」を「my-workflow」テンプレートに追加します。

gcloud dataproc workflow-templates add-job hadoop \
  --step-id foo \
  --workflow-template my-workflow \
  -- space separated job args

ジョブ「bar」を「my-workflow」テンプレートに追加します。このジョブは、ワークフロー内のジョブ「foo」が正常に完了してから実行されます。

gcloud dataproc workflow-templates add-job job-type \
    --step-id bar \
    --start-after foo \
    --workflow-template my-workflow \
    -- space separated job args

別のジョブ「baz」を「my-workflow」テンプレートに追加します。このジョブは「foo」と「bar」の両方のジョブが正常に完了してから実行されます。

gcloud dataproc workflow-templates add-job job-type \
    --step-id baz \
    --start-after foo,bar \
    --workflow-template my-workflow \
    -- space separated job args

REST API

WorkflowTemplate.OrderedJob をご覧ください。このフィールドは、workflowTemplates.create または workflowTemplates.update リクエストによって送信された、完成済みの WorkflowTemplate の一部として提供されます。

Console

GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

ワークフローの実行

ワークフロー テンプレートをインスタンス化すると、テンプレートで定義されたワークフローが実行されます。テンプレートの複数のインスタンス化を行えます。つまり、1 つのワークフローを複数回実行できます。

gcloud コマンド

gcloud dataproc workflow-templates instantiate template-id

このコマンドにより、オペレーション ID が返されます。これを使用して、ワークフローのステータスを追跡できます。

例:
gcloud beta dataproc workflow-templates instantiate my-template-id
...
WorkflowTemplate [my-template-id] RUNNING
...
Created cluster: my-template-id-rg544az7mpbfa.
Job ID teragen-rg544az7mpbfa RUNNING
Job ID teragen-rg544az7mpbfa COMPLETED
Job ID terasort-rg544az7mpbfa RUNNING
Job ID terasort-rg544az7mpbfa COMPLETED
Job ID teravalidate-rg544az7mpbfa RUNNING
Job ID teravalidate-rg544az7mpbfa COMPLETED
...
Deleted cluster: my-template-id-rg544az7mpbfa.
WorkflowTemplate [my-template-id] DONE

REST API

workflowTemplates.instantiate をご覧ください。

Console

GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

ワークフロー ジョブの失敗

ワークフロー内のいずれかのジョブが失敗すると、ワークフローが失敗します。Cloud Dataproc は、障害の影響を小さくするため、同時に実行されているすべてのジョブを停止させ、以降のジョブが開始されないようにします。

ワークフローのモニタリングと一覧表示

gcloud コマンド

ワークフローをモニタリングするには、次のコマンドを実行します。

gcloud dataproc operations describe operation-id

注: この operation-id は、gcloud dataproc workflow-templates instantiate を使用してワークフローをインスタンス化すると返されます(ワークフローの実行をご覧ください)。

ワークフローのステータスを一覧表示するには、次のコマンドを実行します。

gcloud dataproc operations list \
    --filter "labels.goog-dataproc-operation-type=WORKFLOW AND status.state=RUNNING"

REST API

ワークフローをモニタリングするには、Cloud Dataproc の operations.get API を使用します。

実行中のワークフローを一覧表示するには、ラベルフィルタを設定して、Cloud Dataproc の operations.list API を使用します。

Console

GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

ワークフローの終了

gcloud コマンドライン ツールを使用するか、Cloud Dataproc API を呼び出して、ワークフローを終了できます。

gcloud コマンド

gcloud dataproc operations cancel operation-id
注: この operation-id は、gcloud dataproc workflow-templates instantiate を使用してワークフローをインスタンス化すると返されます(ワークフローの実行をご覧ください)。

REST API

operations.cancel API をご覧ください。

Console

GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

ワークフロー テンプレートの更新

更新しても、実行中のワークフローには影響がありません。新しいテンプレート バージョンは、新しいワークフローにのみ適用されます。

gcloud コマンド

ワークフロー テンプレートは、既存のワークフロー template-id を参照する、以下の新しい gcloud workflow-templates コマンドを発行することで更新できます。

上記のコマンドを既存のワークフロー テンプレートに対して発行します。

REST API

REST API でテンプレートを更新するには:

  1. workflowTemplates.get を呼び出します。現在のテンプレートが返され、version フィールドには現在のサーバーのバージョンが入力されます。
  2. 取得したテンプレートを更新します。
  3. 更新後のテンプレートで workflowTemplates.update を呼び出します。

Console

GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

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

gcloud コマンド

gcloud dataproc workflow-templates delete template-id

注: この operation-id は、gcloud dataproc workflow-templates instantiate を使用してワークフローをインスタンス化すると返されます(ワークフローの実行をご覧ください)。

REST API

workflowTemplates.delete をご覧ください。

Console

GCP Console の Cloud Dataproc ワークフロー ページから、既存のワークフロー テンプレートとインスタンス化されたワークフローを表示できます。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Dataproc ドキュメント
ご不明な点がありましたら、Google のサポートページをご覧ください。