您可以通过以下步骤设置和运行工作流:
- 创建工作流模板
- 配置受管(临时)集群或选择现有集群
- 添加作业
- 对模板进行实例化以运行工作流
创建模板
运行以下 command
创建 Dataproc 工作流模板资源。
gcloud dataproc workflow-templates createTEMPLATE_ID \ --region=REGION
备注:
在 workflowTemplates.create 请求中提交 WorkflowTemplate。您可以添加 WorkflowTemplate.EncryptionConfig.kmsKey 字段,以对工作流模板作业参数使用 CMEK 加密。 kmsKey
您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。
配置或选择集群
Dataproc 可以为您的工作流或现有集群创建和使用新“受管”集群。
现有集群:请参阅搭配使用集群选择器与工作流为您的工作流选择一个现有集群。
受管集群:您必须为工作流配置受管集群。Dataproc 将创建该新集群以运行工作流作业,然后在工作流结束时删除该集群。
您可以使用
gcloud
命令行工具或 Dataproc API 为工作流配置受管集群。使用从 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 请参阅 WorkflowTemplatePlacement.ManagedCluster,您可以将其作为使用 workflowTemplates.create 或 workflowTemplates.update 请求提交的已完成的 WorkflowTemplate 的一部分提供。
您可以使用
GceClusterConfig.serviceAccount
字段为托管式集群指定虚拟机服务账号。您可以通过 Google Cloud 控制台中的 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-jobJOB_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-jobJOB_TYPE \ --region=REGION \ --step-id=baz \ --start-after=foo,bar \ --workflow-template=my-workflow \ --space separated job args
请参阅 WorkflowTemplate.OrderedJob。此字段是使用 workflowTemplates.create 或 workflowTemplates.update 请求提交的已完成的 WorkflowTemplate 的一部分。
您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。
运行工作流
在工作流模板的实例化过程中,系统将运行由模板定义的工作流。支持对一个模板执行多个实例化过程 — 您可多次运行一个工作流。
gcloud dataproc workflow-templates instantiateTEMPLATE_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
您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。
工作流作业失败
如果工作流中的任何作业发生故障,都会导致工作流失败。 Dataproc 将指示所有并发执行的作业失败,并阻止后续作业启动,以便缓解失败造成的影响。
监控和列出工作流
监控工作流:
gcloud dataproc operations describeOPERATION_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 cancelOPERATION_ID \ --region=REGION
gcloud dataproc workflow-templates instantiate
实例化工作流时,系统会返回 operation-id(请参阅运行工作流)。
请参阅 operations.cancel API。
您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。
更新工作流模板
更新不会影响正在运行的工作流。新模板版本仅适用于新工作流。
通过发出引用现有工作流模板 ID 的新 gcloud workflow-templates
命令可以更新工作流模板:
要使用 REST API 更新模板,请执行以下操作:
- 调用 workflowTemplates.get,其可返回当前模板,其中
version
字段填充了当前服务器版本。 - 对提取的模板进行更新。
- 使用更新后的模板调用 workflowTemplates.update。
您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。
删除工作流模板
gcloud dataproc workflow-templates deleteTEMPLATE_ID \ --region=REGION
注意:使用 gcloud dataproc workflow-templates instantiate
实例化工作流时,系统会返回 operation-id(请参阅运行工作流)。
您可以通过 Google Cloud 控制台中的 Dataproc 工作流页面查看现有工作流模板和实例化的工作流。