ワークフローのモニタリングとデバッグ

このページには、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 beta dataproc workflow-templates createコマンドで --dag-timeout フラグを使用します。接尾辞の「s」、「m」、「h」、「d」を使用して、秒、分、時、および曜日の値をそれぞれ設定できます。タイムアウト時間は 10 分(「10m」)から 24 時間(「24h」または「1d」)にする必要があります。

gcloud beta 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 リクエストの一部として WorkflowTemplatedagTimeout フィールドに入力します。

Console

現在、Google Cloud Console では、ワークフロー テンプレートの作成はサポートされていません。

ワークフロー テンプレートのタイムアウトの更新

既存のワークフロー テンプレートを更新して、ワークフローのタイムアウトを変更、追加、削除できます。

gcloud コマンド

ワークフロー タイムアウトの追加または変更

既存のテンプレートでワークフロー タイムアウトを追加または変更するには、gcloud beta dataproc workflow-templates set-dag-timeoutコマンドで --dag-timeout フラグを使用します。接尾辞の「s」、「m」、「h」、「d」使用して、それぞれ秒、分、時間、日の期間の値を設定できます。タイムアウト時間は 10 分(「10m」)から 24 時間(「24h」)にする必要があります。

gcloud beta dataproc workflow-templates set-dag-timeout template-id (such as "my-workflow") \
    --region=region \
    --dag-timeout=duration (from "10m" to "24h" or "1d")

ワークフロー タイムアウトを削除する

既存のテンプレートからワークフロー タイムアウトを削除するには、gcloud beta dataproc workflow-templates remove-dag-timeout コマンドを使用します。

gcloud beta dataproc workflow-templates remove-dag-timeout template-id (such as "my-workflow") \
    --region=region

API

ワークフロー タイムアウトの追加または変更

既存のテンプレートのワークフロー タイムアウトを追加または変更するには、テンプレートの dagTimeout フィールドに新しいタイムアウト値を入力してワークフロー テンプレートを更新します。

ワークフロー タイムアウトを削除する

既存のテンプレートからワークフロー タイムアウトを削除するには、テンプレートの dagTimeout フィールドを削除してワークフロー テンプレートを更新します。

Console

現在、Google Cloud Console では、ワークフロー テンプレートの更新はサポートされていません。