このページには、Dataproc ワークフローのモニタリングとデバッグに役立つ情報が記載されています。
ワークフローの一覧表示
インスタンス化された WorkflowTemplate は「ワークフロー」と呼ばれ、「オペレーション」としてモデル化されています。
次の gcloud
コマンドを実行して、プロジェクトのワークフローを一覧表示します。
gcloud dataproc operations list \ --region=region \ --filter="operationType = WORKFLOW"
... OPERATION_NAME DONE projects/.../operations/07282b66-2c60-4919-9154-13bd4f03a1f2 True projects/.../operations/1c0b0fd5-839a-4ad4-9a57-bbb011956690 True
以下は「terasort」テンプレートから開始したすべてのワークフローを一覧表示するリクエストの例です。
gcloud dataproc operations list \ --region=region \ --filter="labels.goog-dataproc-workflow-template-id=terasort"
... OPERATION_NAME DONE projects/.../07282b66-2c60-4919-9154-13bd4f03a1f2 True projects/.../1c0b0fd5-839a-4ad4-9a57-bbb011956690 True
この後のクエリでは、OPERATION_NAME
の UUID 部分のみが使用されます。
WorkflowMetadata の使用
operation.metadata
フィールドには、ワークフローの失敗の診断に役立つ情報が表示されます。
以下は、オペレーションに埋め込まれたノード(ジョブ)のグラフを含む WorkflowMetadata
の例です。
{ "name": "projects/my-project/regions/us-central1/operations/671c1d5d-9d24-4cc7-8c93-846e0f886d6e", "metadata": { "@type": "type.googleapis.com/google.cloud.dataproc.v1.WorkflowMetadata", "template": "terasort", "version": 1, "createCluster": { "operationId": "projects/my-project/regions/us-central1/operations/8d472870-4a8b-4609-9f7d-48daccb028fc", "Done": true }, "graph": { "nodes": [ { "stepId": "teragen", "jobId": "teragen-vtrprwcgepyny", "state": "COMPLETED" }, { "stepId": "terasort", "prerequisiteStepIds": [ "teragen" ], "jobId": "terasort-vtrprwcgepyny", "state": "FAILED", "error": "Job failed" }, { "stepId": "teravalidate", "prerequisiteStepIds": [ "terasort" ], "state": "FAILED", "error": "Skipped, node terasort failed" } ] }, "deleteCluster": { "operationId": "projects/my-project/regions/us-central1/operations/9654c67b-2642-4142-a145-ca908e7c81c9", "Done": true }, "state": "DONE", "clusterName": "terasort-cluster-vtrprwcgepyny" }, "done": true, "error": { "message": "Workflow failed" } } Done!
テンプレートの取得
前の例で示したように、metadata
にはテンプレート ID とバージョンが含まれています。
"template": "terasort", "version": 1,
テンプレートが削除されていない場合、インスタンス化されたテンプレートのバージョンは、describe-with-version リクエストで取得できます。
gcloud dataproc workflow-templates describe terasort \ --region=region \ --version=1
テンプレートによって開始されたクラスタ オペレーションを一覧表示します。
gcloud dataproc operations list \ --region=region \ --filter="labels.goog-dataproc-workflow-instance-id = 07282b66-2c60-4919-9154-13bd4f03a1f2"
... OPERATION_NAME DONE projects/.../cf9ce692-d6c9-4671-a909-09fd62041024 True projects/.../1bbaefd9-7fd9-460f-9adf-ee9bc448b8b7 True
次のサンプル リクエストでは、テンプレートから送信されたジョブが一覧表示されます。
gcloud dataproc jobs list \ --region=region \ --filter="labels.goog-dataproc-workflow-template-id = terasort"
... JOB_ID TYPE STATUS terasort2-ci2ejdq2ta7l6 pyspark DONE terasort2-ci2ejdq2ta7l6 pyspark DONE terasort1-ci2ejdq2ta7l6 pyspark DONE terasort3-3xwsy6ubbs4ak pyspark DONE terasort2-3xwsy6ubbs4ak pyspark DONE terasort1-3xwsy6ubbs4ak pyspark DONE terasort3-ajov4nptsllti pyspark DONE terasort2-ajov4nptsllti pyspark DONE terasort1-ajov4nptsllti pyspark DONE terasort1-b262xachbv6c4 pyspark DONE terasort1-cryvid3kreea2 pyspark DONE terasort1-ndprn46nesbv4 pyspark DONE terasort1-yznruxam4ppxi pyspark DONE terasort1-ttjbhpqmw55t6 pyspark DONE terasort1-d7svwzloplbni pyspark DONE
ワークフロー インスタンスから送信されたジョブを一覧表示します。
gcloud dataproc jobs list \ --region=region \ --filter="labels.goog-dataproc-workflow-instance-id = 07282b66-2c60-4919-9154-13bd4f03a1f2"
... JOB_ID TYPE STATUS terasort3-ci2ejdq2ta7l6 pyspark DONE terasort2-ci2ejdq2ta7l6 pyspark DONE terasort1-ci2ejdq2ta7l6 pyspark DONE
ワークフロー タイムアウト
ワークフローのジョブがタイムアウト時間内に完了しなかった場合に、ワークフローをキャンセルするワークフロー タイムアウトを設定できます。タイムアウト期間は、ワークフロー処理全体ではなく、ワークフロー内のジョブの DAG(有向非巡回グラフ)に適用されます。タイムアウト期間は、最初のワークフロー ジョブが開始したときに始まります。マネージド クラスタの作成に必要な時間は含まれません。タイムアウト期間の終了時にいずれかのジョブが実行されている場合、実行中のジョブがすべて停止し、ワークフローが終了します。また、ワークフローがマネージド クラスタで実行されている場合は、クラスタが削除されます。
利点: この機能を使用すれば、ジョブの停止により完了していないワークフローを手動で終了する必要がなくなります。
ワークフロー テンプレートのタイムアウトの設定
ワークフロー テンプレートのタイムアウト時間は、ワークフロー テンプレートを作成するときに設定できます。ワークフロー テンプレートを更新して、既存のワークフロー テンプレートにワークフロー タイムアウトを追加することもできます。
gcloud
新しいテンプレートにワークフロー タイムアウトを設定するには、gcloud dataproc workflow-templates createコマンドで --dag-timeout
フラグを使用します。接尾辞の「s」、「m」、「h」、「d」を使用して、秒、分、時、および曜日の値をそれぞれ設定できます。タイムアウト時間は 10 分(「10m」)から 24 時間(「24h」または「1d」)にする必要があります。
gcloud dataproc workflow-templates create template-id (such as "my-workflow") \ --region=region \ --dag-timeout=duration (from "10m" to "24h" or "1d"") \ ... other args ...
API
ワークフローのタイムアウトを設定するには、workflowTemplates.create リクエストの一部として WorkflowTemplate
dagTimeout
フィールドに入力します。
Console
現在、Google Cloud コンソールでは、ワークフロー テンプレートの作成はサポートされていません。
ワークフロー テンプレートのタイムアウトの更新
既存のワークフロー テンプレートを更新して、ワークフローのタイムアウトを変更、追加、削除できます。
gcloud
ワークフロー タイムアウトの追加または変更
既存のテンプレートでワークフロー タイムアウトを追加または変更するには、gcloud dataproc workflow-templates set-dag-timeout コマンドで --dag-timeout
フラグを使用します。接尾辞の「s」、「m」、「h」、「d」使用して、それぞれ秒、分、時間、日の期間の値を設定できます。タイムアウト時間は 10 分(「10m」)から 24 時間(「24h」)にする必要があります。
gcloud dataproc workflow-templates set-dag-timeout template-id (such as "my-workflow") \ --region=region \ --dag-timeout=duration (from "10m" to "24h" or "1d")
ワークフロー タイムアウトを削除する
既存のテンプレートからワークフロー タイムアウトを削除するには、gcloud dataproc workflow-templates remove-dag-timeout コマンドを使用します。
gcloud dataproc workflow-templates remove-dag-timeout template-id (such as "my-workflow") \ --region=region
API
ワークフロー タイムアウトの追加または変更
既存のテンプレートのワークフロー タイムアウトを追加または変更するには、テンプレートの dagTimeout
フィールドに新しいタイムアウト値を入力してワークフロー テンプレートを更新します。
ワークフロー タイムアウトを削除する
既存のテンプレートからワークフロー タイムアウトを削除するには、テンプレートの dagTimeout
フィールドを削除してワークフロー テンプレートを更新します。
Console
現在、Google Cloud コンソールでは、ワークフロー テンプレートの更新はサポートされていません。