在本文档中,您将使用的以下收费组件: Google Cloud
- Dataproc
- Compute Engine
- Cloud Scheduler
您可使用 价格计算器 根据您的预计使用情况来估算费用。
准备工作
设置项目
- 登录您的 Google Cloud 账号。如果您是新手 Google Cloud, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
创建自定义角色
- 打开 Google Cloud 控制台中的 IAM 和管理员 → 角色页面。
- 点击“创建角色”以打开创建角色页面。
- 填写“标题”、“说明”、“ID”、“发布阶段”等字段。建议:使用“Dataproc 工作流模板创建”作为角色标题。
- 点击“添加权限”,
- 在添加权限表单中,点击过滤条件,然后选择“权限”。填写过滤条件以读取“权限:dataproc.workflowTemplates.instantiate”。
- 点击所列权限左侧的复选框,然后点击添加。

- 在“创建角色”页面上,再次点击“添加权限”以重复之前的子步骤,将“iam.serviceAccounts.actAs”权限添加到自定义角色。创建角色页面现在列出了两个权限。

- 点击自定义角色页面上的“创建”。自定义角色列在角色页面上。

创建服务账号
在 Google Cloud 控制台中,前往服务账号页面。
选择您的项目。
点击 创建服务账号。
在服务账号名称字段中,输入名称
workflow-scheduler。 Google Cloud 控制台会根据此名称填充服务账号 ID 字段。可选:在服务账号说明字段中,输入服务账号的说明。
点击创建并继续。
点击选择角色字段,然后选择您在上一步中创建的 Dataproc Workflow Template Create 自定义角色。
点击继续。
在服务账号管理员角色字段中,输入您的 Google 账号邮箱。
点击完成以完成服务账号的创建过程。
创建工作流模板。
在本地终端窗口或 Cloud Shell 中复制并运行下面列出的命令,以创建和定义工作流模板。
注意:
- 这些命令指定“us-central1”区域。如果您之前运行过
gcloud config set compute/region来设置区域属性,则可以指定其他区域或删除--region标志。 add-job命令中的“-- ”(破折号空格)序列将1000参数传递到 SparkPi 作业,该作业指定用于估计 Pi 值的样本数量。
- 创建工作流模板。
gcloud dataproc workflow-templates create sparkpi \ --region=us-central1
- 将 Spark 作业添加到 sparkpi 工作流模板。“计算”步骤 ID 是必需的,用于标识已添加的 SparkPi 作业。
gcloud dataproc workflow-templates add-job spark \ --workflow-template=sparkpi \ --step-id=compute \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --region=us-central1 \ -- 1000
- 使用托管单节点集群运行工作流。Dataproc 将创建集群,对其运行工作流,然后在工作流完成时删除集群。
gcloud dataproc workflow-templates set-managed-cluster sparkpi \ --cluster-name=sparkpi \ --single-node \ --region=us-central1
- 点击 Google Cloud 控制台中的 Dataproc 工作流页面上的
sparkpi名称,以打开工作流模板详细信息页面。确认 sparkpi 模板属性。
创建 Cloud Scheduler 作业
在Google Cloud 控制台中,打开 Cloud Scheduler 页面(您可能需要选择项目才能打开此页面)。 点击“创建作业”。
输入或选择以下作业信息:
- 选择一个地区:您创建工作流模板的“us-central” 或其他地区。
- 名称:“sparkpi”
- 频率:“* * * * *”表示每分钟选择一次;“0 9 * * 1”表示每个星期一上午 9 点进行选择。如需了解其他 unix-cron 值,请参阅定义作业时间表。注意:无论您为作业设置的频率如何,都可以在 Google Cloud 控制台中点击 Cloud Scheduler 作业上的“立即运行”按钮,以运行和测试作业。
- 时区:选择您的 timezone。输入“美国”可列出美国时区。
- 目标:“HTTP”
- 网址:在插入 your-project-id 后插入以下网址。如果您在其他地区创建了工作流模板,请替换“us-central1”。此网址将调用 Dataproc
workflowTemplates.instantiateAPI 以运行 sparkpi 工作流模板。https://dataproc.googleapis.com/v1/projects/your-project-id/regions/us-central1/workflowTemplates/sparkpi:instantiate?alt=json
- HTTP 方法:
- “POST”
- 正文:“{}”
- 身份验证标头:
- “添加 OAuth 令牌”
- 服务账号:插入您为本教程创建的服务账号的 service account address。您可以在插入 your-project-id 后使用以下账号地址:
workflow-scheduler@your-project-id.iam.gserviceaccount.com
- 范围:您可以忽略此项。
- 点击“创建”。
测试计划的工作流作业
在 Cloud Scheduler 作业页面的
sparkpi作业行上,点击“立即运行”。等待几分钟,然后打开 Dataproc 工作流页面以验证 sparkpi 工作流是否已完成。

在工作流删除托管式集群后,作业详细信息会保留在 Google Cloud 控制台中。点击 Dataproc 作业 页面上列出的
compute...作业以查看工作流作业详细信息。
清理
本教程中的工作流将在工作流完成时删除其托管集群。通过保留工作流,您可以重新运行工作流且不会产生费用。您可以删除本教程中创建的其他资源,以避免重复收费。
删除项目
- 在 Google Cloud 控制台中,前往 管理资源 页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击 关闭以删除项目。
删除工作流模板
gcloud dataproc workflow-templates delete sparkpi \ --region=us-central1
删除 Cloud Scheduler 作业
在 Google Cloud 控制台中打开 Cloud Scheduler 作业页面,选中 sparkpi 函数左侧的复选框,然后点击“删除”。
删除您的服务账号
打开 Google Cloud 控制台中的 IAM 和管理员 → 服务账号页面,选中 workflow-scheduler... 服务账号左侧的复选框,然后点击“删除”。
后续步骤
- 请参阅 Dataproc 工作流模板概览。
- 请参阅工作流安排解决方案。