本页面提供的信息可帮助您监控和调试 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 dataproc workflow-templates create 命令搭配使用。您可以使用“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
字段。
控制台
目前,Google Cloud 控制台不支持创建工作流模板。
更新工作流模板超时
您可以更新现有工作流模板以更改、添加或移除工作流超时。
gcloud
添加或更改工作流超时
如需在现有模板中添加或更改工作流超时,请将 --dag-timeout
标志与 gcloud dataproc workflow-templates set-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
字段来更新工作流模板。
控制台
目前,Google Cloud 控制台不支持更新 工作流模板。