使用工作流

您可以通过以下步骤设置和运行工作流:

  1. 创建工作流模板
  2. 配置受管(临时)集群或选择现有集群
  3. 添加作业
  4. 对模板进行实例化以运行工作流

创建模板

运行以下 command 创建 Dataproc 工作流模板资源。

gcloud dataproc workflow-templates create TEMPLATE_ID \
    --region=REGION

备注:

  • REGION:指定模板将在其中运行的区域
  • TEMPLATE_ID:为模板提供一个 ID,例如“workflow-template-1”。
  • CMEK 加密。您可以添加 --kms-key 标志,以对工作流模板作业参数使用 CMEK 加密

workflowTemplates.create 请求中提交 WorkflowTemplate。您可以添加 WorkflowTemplate.EncryptionConfig.kmsKey 字段,以对工作流模板作业参数使用 CMEK 加密。 kmsKey

您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。

配置或选择集群

Dataproc 可以为您的工作流或现有集群创建和使用新“受管”集群。

将作业添加到模板

除非您指定一个或多个作业依赖项,否则所有作业将并发运行。作业的依赖性表示为:在最终作业开始之前,一系列其他作业必须成功完成。您必须为每项作业提供 step-id。该 ID 在工作流中必须具有唯一性,但不必具有全局唯一性。

使用从 gcloud dataproc jobs submit 继承的作业类型和标记来定义要添加到模板的作业。您可以选择使用 ‑‑start-after job-id of another workflow job 标志,以使该作业在工作流中的其他一个或多个作业完成后启动。

示例

将 Hadoop 作业“foo”添加到“my-workflow”模板中。

gcloud dataproc workflow-templates add-job hadoop \
    --region=REGION \
    --step-id=foo \
    --workflow-template=my-workflow \
    -- space separated job args

将作业“bar”添加到“my-workflow”模板中,该作业将在工作流作业“foo”成功完成后运行。

gcloud dataproc workflow-templates add-job JOB_TYPE \
    --region=REGION \
    --step-id=bar \
    --start-after=foo \
    --workflow-template=my-workflow \
    -- space separated job args

将另一个作业“baz”添加到“my-workflow”模板中,该作业将在“foo”和“bar”作业成功完成后运行。

gcloud dataproc workflow-templates add-job JOB_TYPE \
    --region=REGION \
    --step-id=baz \
    --start-after=foo,bar \
    --workflow-template=my-workflow \
    -- space separated job args

请参阅 WorkflowTemplate.OrderedJob。此字段是使用 workflowTemplates.createworkflowTemplates.update 请求提交的已完成的 WorkflowTemplate 的一部分。

您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。

运行工作流

在工作流模板的实例化过程中,系统将运行由模板定义的工作流。支持对一个模板执行多个实例化过程 — 您可多次运行一个工作流。

gcloud dataproc workflow-templates instantiate TEMPLATE_ID \
    --region=REGION

该命令返回操作 ID,您可以使用该 ID 来跟踪工作流状态。

命令和输出示例
gcloud beta dataproc workflow-templates instantiate my-template-id \
    --region=us-central1
...
WorkflowTemplate [my-template-id] RUNNING
...
Created cluster: my-template-id-rg544az7mpbfa.
Job ID teragen-rg544az7mpbfa RUNNING
Job ID teragen-rg544az7mpbfa COMPLETED
Job ID terasort-rg544az7mpbfa RUNNING
Job ID terasort-rg544az7mpbfa COMPLETED
Job ID teravalidate-rg544az7mpbfa RUNNING
Job ID teravalidate-rg544az7mpbfa COMPLETED
...
Deleted cluster: my-template-id-rg544az7mpbfa.
WorkflowTemplate [my-template-id] DONE

请参阅 workflowTemplates.instantiate

您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。

工作流作业失败

如果工作流中的任何作业发生故障,都会导致工作流失败。 Dataproc 将指示所有并发执行的作业失败,并阻止后续作业启动,以便缓解失败造成的影响。

监控和列出工作流

监控工作流:

gcloud dataproc operations describe OPERATION_ID \
    --region=REGION

注意:使用 gcloud dataproc workflow-templates instantiate 实例化工作流时,系统会返回 operation-id(请参阅运行工作流)。

列出工作流状态:

gcloud dataproc operations list \
    --region=REGION \
    --filter="labels.goog-dataproc-operation-type=WORKFLOW AND status.state=RUNNING"

要监控工作流,请使用 Dataproc operations.get API。

要列出正在运行的工作流,请使用具有标签过滤条件的 Dataproc operations.list API。

您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。

终止工作流

您可以使用 Google Cloud CLI 或调用 Dataproc API 结束工作流。

gcloud dataproc operations cancel OPERATION_ID \
    --region=REGION
注意:使用 gcloud dataproc workflow-templates instantiate 实例化工作流时,系统会返回 operation-id(请参阅运行工作流)。

请参阅 operations.cancel API。

您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。

更新工作流模板

更新不会影响正在运行的工作流。新模板版本仅适用于新工作流。

通过发出引用现有工作流模板 ID 的新 gcloud workflow-templates 命令可以更新工作流模板:

至现有的工作流模板。

要使用 REST API 更新模板,请执行以下操作:

  1. 调用 workflowTemplates.get,其可返回当前模板,其中 version 字段填充了当前服务器版本。
  2. 对提取的模板进行更新。
  3. 使用更新后的模板调用 workflowTemplates.update

您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。

删除工作流模板

gcloud dataproc workflow-templates delete TEMPLATE_ID \
    --region=REGION

注意:使用 gcloud dataproc workflow-templates instantiate 实例化工作流时,系统会返回 operation-id(请参阅运行工作流)。

请参阅 workflowTemplates.delete

您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。