使用工作流

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

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

创建模板

Google Cloud 控制台

在控制台的 Managed Service for Apache Spark 工作流 页面中,选择创建工作流模板,然后确认或提供模板、集群、 作业和依赖项设置。 Google Cloud

gcloud CLI

运行以下 command 以创建 Managed Service for Apache Spark 工作流模板资源。

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 加密

配置或选择集群

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

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

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

    您可以使用 Google Cloud 控制台、 Google Cloud CLI 或 Dataproc API 为工作流配置受管集群。

    Google Cloud 控制台

    在控制台的 Managed Service for Apache Spark 工作流 页面中,选择创建工作流模板,然后确认或提供模板、集群、 作业和依赖项设置。 Google Cloud

    Google Cloud CLI

    使用从 gcloud dataproc cluster create 继承的标志来配置受管集群,例如工作器数量以及 主节点和工作器机器类型。

    gcloud dataproc workflow-templates set-managed-cluster TEMPLATE_ID \
        --cluster-name=CLUSTER_NAME \
        --region=REGION \
        --master-machine-types="type=MACHINE_TYPE_1,rank=0" \
        --master-machine-types="type=MACHINE_TYPE_2,rank=1" \
        --worker-machine-types="type=PRIMARY_WORKER_MACHINE_TYPE_1,rank=0" \
        --worker-machine-types="type=PRIMARY_WORKER_MACHINE_TYPE_2,rank=1" \
        --num-workers=NUMBER \
        --service-account=SERVICE_ACCOUNT
    

    注意:

    • CLUSTER_NAME: :Managed Service for Apache Spark 会为集群名称添加后缀以确保唯一性。
    • MACHINE_TYPE::您可以使用 灵活的虚拟机 排名机器类型来提供针对资源不可用的弹性。
    • SERVICE_ACCOUNT::您可以为受管集群指定 虚拟机服务账号

    REST API

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

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

向模板添加作业

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

gcloud CLI

使用从 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 的一部分。

控制台

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

运行工作流

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

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

控制台

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

工作流作业失败

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

监控和列出工作流

gcloud CLI

监控工作流:

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

要监控工作流,请使用 Managed Service for Apache Spark operations.get API。

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

控制台

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

终止工作流

您可以使用 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。

控制台

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

更新工作流模板

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

gcloud CLI

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

REST API

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

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

控制台

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

删除工作流模板

gcloud CLI

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

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

REST API

请参阅 workflowTemplates.delete

控制台

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