Dataproc の WorkflowTemplates API には、ワークフローを管理および実行するための柔軟で使いやすいメカニズムが備えられています。ワークフロー テンプレートは、再利用可能なワークフロー構成です。ジョブを実行する場所に関する情報を含むジョブのグラフを定義します。
要点:
- ワークフロー テンプレートをインスタンス化すると、ワークフローが起動します。ワークフローは、クラスタ上のジョブの有向非巡回グラフ(DAG)を実行するオペレーションです。
- ワークフローによってマネージド クラスタが使用されている場合は、クラスタが作成され、ジョブが実行され、ジョブが終了したときにクラスタが削除されます。
- ワークフローによってクラスタ セレクタが使用されている場合は、選択された既存のクラスタでジョブが実行されます。
- ワークフローは複雑なジョブフローに最適です。依存関係が正常に完了した後に限りジョブが開始されるように、ジョブ依存関係を作成できます。
- ワークフロー テンプレートを作成するときに、Dataproc ではクラスタの作成やクラスタへのジョブの送信は行いません。ワークフロー テンプレートがinstantiatedされると、Dataproc はクラスタを作成または選択し、そのクラスタでワークフロー ジョブを実行します。
ワークフロー テンプレートの種類
マネージド クラスタ
ワークフロー テンプレートでは、マネージド クラスタを指定できます。ワークフローでは、「エフェメラル」クラスタを作成してワークフロー ジョブを実行し、ワークフローの終了時にこのクラスタを削除します。
クラスタ セレクタ
ワークフロー テンプレートでは、以前にクラスタに添付されていた 1 つ以上のユーザーラベルを指定することによって、ワークフロー ジョブを実行する既存のクラスタを指定できます。ワークフローは、すべてのラベルに一致するクラスタで実行されます。複数のクラスタがすべてのラベルと一致する場合、Dataproc では、すべてのワークフロー ジョブを実行するために、YARN メモリの空き容量が最も多いクラスタを選択します。ワークフローの終了時に、Dataproc は選択したクラスタを削除しません。詳細については、ワークフローでクラスタ セレクタを使用するをご覧ください。
パラメータ化
ワークフロー テンプレートに別の値を指定して複数回使用する場合は、パラメータを使用して、実行ごとにワークフロー テンプレートを編集する必要がなくなります。
テンプレートでパラメータを定義する。
実行ごとにパラメータに異なる値を渡す。
詳細については、ワークフロー テンプレートのパラメータ化をご覧ください。
インライン
ワークフローをインラインでインスタンス化するには、gcloud
コマンドとワークフロー テンプレート YAML ファイルを組み合わせて使用するか、Dataproc InstantiateInline API を呼び出します(インライン Dataproc ワークフローの使用を参照)。インライン ワークフローでは、ワークフロー テンプレートのリソースは作成または変更されません。
ワークフロー テンプレートのユースケース
反復的なタスクの自動化: 頻繁に使用されるクラスタ構成とジョブが、ワークフローによってカプセル化されます。
Transactional、Fire、Forget API インタラクション モデル。ワークフロー テンプレートは、次のような一般的なフローに関与する手順を置き換えます。
- クラスタの作成
- ジョブの送信
- ポーリング
- クラスタの削除
ワークフロー テンプレートでは、単一のトークンを使用して、クラスタの作成から削除までの進行状況を追跡し、エラー処理および回復を自動化します。 また、Cloud Run 関数や Cloud Composer などの他のツールと Dataproc の統合を簡素化します。
エフェメラル クラスタと長寿命クラスタのサポート: Apache Hadoop の実行に関連して、クラスタを調整して適正サイズに変更する作業が一般的に複雑になります。 エフェメラル(マネージド)クラスタは、単一のワークロードを実行するため、より簡単に構成できます。より寿命が長いクラスタでクラスタ セレクタを使用すると、クラスタの作成および削除に伴う償却コストが発生することなく、同じワークロードを繰り返し実行できます。
Granular IAM セキュリティ: Dataproc クラスタを作成してジョブを送信するには、オールオアナッシングの IAM の権限が必要です。ワークフロー テンプレートは、テンプレートごとの workflowTemplates.instantiate 権限を使用し、クラスタまたはジョブの権限に依存しません。