在本文档中,您将使用 Google Cloud 的以下收费组件:
- Dataproc
- Compute Engine
- Cloud Scheduler
您可使用价格计算器根据您的预计使用情况来估算费用。
准备工作
设置项目
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
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.instantiate
API 以运行 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...
作业以查看工作流作业详情。
清理
本教程中的工作流将在工作流完成时删除其托管集群。通过保留工作流,您可以重新运行工作流且不会产生费用。您可以删除本教程中创建的其他资源,以避免重复收费。
删除项目
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
删除工作流模板
gcloud dataproc workflow-templates delete sparkpi \ --region=us-central1
删除 Cloud Schedule 作业
在 Google Cloud 控制台中打开 Cloud Scheduler 作业页面,选中 sparkpi
函数左侧的复选框,然后点击“删除”。
删除您的服务账号
在 Google Cloud 控制台中打开 IAM 和管理员 - 服务账号页面,选中 workflow-scheduler...
服务账号左侧的复选框,然后点击“删除”。
后续步骤
- 请参阅 Dataproc 工作流模板概览
- 请参阅工作流安排解决方案