使用工作流

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

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

创建模板

gcloud CLI

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

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

注意:

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

REST API

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

控制台

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

配置或选择集群

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

  • 现有集群:请参阅搭配使用集群选择器与工作流为您的工作流选择一个现有集群。

  • 受管集群:您必须为工作流配置受管集群。Dataproc 将创建该新集群以运行工作流作业,然后在工作流结束时删除该集群。

    您可以使用 gcloud 命令行工具或 Dataproc API 为工作流配置受管集群。

    gcloud 命令

    使用从 gcloud dataproc cluster create 继承的标记来配置受管集群,例如工作器数量以及主实例和工作器机器类型。Dataproc 会为集群名称添加后缀以确保唯一性。您可以使用 --service-account 标志为托管集群指定虚拟机服务账号

    gcloud dataproc workflow-templates set-managed-cluster TEMPLATE_ID \
        --region=REGION \
        --master-machine-type=MACHINE_TYPE \
        --worker-machine-type=MACHINE_TYPE \
        --num-workers=NUMBER \
        --cluster-name=CLUSTER_NAME
        --service-account=SERVICE_ACCOUNT
    

    REST API

    请参阅 WorkflowTemplatePlacement.ManagedCluster,您可以将其作为使用 workflowTemplates.createworkflowTemplates.update 请求提交的已完成的 WorkflowTemplate 的一部分提供。

    您可以使用 GceClusterConfig.serviceAccount 字段为托管式集群指定虚拟机服务账号

    控制台

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

将作业添加到模板

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

gcloud 命令

使用从 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

REST API

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

控制台

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

运行工作流

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

gcloud 命令

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

REST API

请参阅 workflowTemplates.instantiate

控制台

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

工作流作业失败

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

监控和列出工作流

gcloud 命令

监控工作流:

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"

REST API

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

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

控制台

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

终止工作流

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

gcloud 命令

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

REST API

请参阅 operations.cancel API。

控制台

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

更新工作流模板

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

gcloud 命令

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

至现有的工作流模板。

REST API

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

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

控制台

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

删除工作流模板

gcloud 命令

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

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

REST API

请参阅 workflowTemplates.delete

控制台

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