监控和调试工作流

本页面提供的信息可帮助您监控和调试 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 命令

要在新模板上设置工作流超时,请将 --dag-timeout 标志与 gcloud beta dataproc workflow-templates create 命令搭配使用。您可以使用“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 请求中填写 WorkflowTemplate dagTimeout 字段。

控制台

目前,Google Cloud Console 不支持创建工作流模板

更新工作流模板超时

您可以更新现有工作流模板以更改、添加或移除工作流超时。

gcloud 命令

添加或更改工作流超时

要在现有模板中添加或更改工作流超时,请将 --dag-timeout 标志与 gcloud beta dataproc workflow-templates set-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 字段来更新工作流模板

控制台

目前,Google Cloud Console 不支持更新工作流模板