您可以通过以下步骤设置和运行工作流:
- 创建工作流模板
- 配置受管(临时)集群或选择现有集群
- 添加作业
- 对模板进行实例化以运行工作流
创建模板
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
注意:
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
注意:
REST API
请参阅 WorkflowTemplatePlacement.ManagedCluster, 您可以将其作为使用 workflowTemplates.create 或 workflowTemplates.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.create 或 workflowTemplates.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 更新模板,请执行以下操作:
- 调用 workflowTemplates.get,其可返回当前模板,其中
version字段填充了当前服务器版本。 - 对提取的模板进行更新。
- 使用更新后的模板调用 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