1. 概览
Cloud Dataproc 是一项托管式 Spark 和 Hadoop 服务,可让您利用开源数据工具进行批处理、查询、流式传输和机器学习。Cloud Dataproc 自动化功能可帮助您快速创建集群并轻松管理集群,以及在不需要集群时将其关闭以节省资金。由于花在管理上的时间和费用减少,您可以将精力集中在实际的工作和数据上。
本教程改编自 https://cloud.google.com/dataproc/overview
学习内容
- 如何创建托管式 Cloud Dataproc 集群(预安装 Apache Spark)。
- 如何提交 Spark 作业
- 如何调整集群大小
- 如何通过 SSH 连接到 Dataproc 集群的主节点
- 如何使用 gcloud 检查集群、作业和防火墙规则
- 如何关停集群
所需条件
您将如何使用本教程?
您如何评价自己在使用 Google Cloud Platform 服务方面的经验水平?
<ph type="x-smartling-placeholder">2. 设置和要求
自定进度的环境设置
请记住项目 ID,它在所有 Google Cloud 项目中都是唯一的名称(上述名称已被占用,您无法使用,抱歉!)。它稍后将在此 Codelab 中被称为 PROJECT_ID
。
- 接下来,您需要在 Cloud 控制台中启用结算功能,才能使用 Google Cloud 资源。
运行此 Codelab 应该不会产生太多的费用(如果有费用的话)。请务必按照“清理”部分部分,其中会指导您如何关停资源,以免产生超出本教程范围的结算费用。Google Cloud 的新用户符合参与 $300 USD 免费试用计划的条件。
3. 启用 Cloud Dataproc 和 Google Compute Engine API
点击屏幕左上角的菜单图标。
从下拉菜单中选择“API 管理器”。
点击启用 API 和服务。
搜索“Compute Engine”。点击“Google Compute Engine API”。
在 Google Compute Engine 页面上,点击启用。
启用后,点击向左箭头即可返回。
现在搜索“Google Cloud Dataproc API”并将其启用
4. 启动 Cloud Shell
基于 Debian 的这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证。这意味着在本 Codelab 中,您只需要一个浏览器(没错,它适用于 Chromebook)。
- 如需从 Cloud Console 激活 Cloud Shell,只需点击激活 Cloud Shell(预配和连接到环境仅需花费一些时间)。
在连接到 Cloud Shell 后,您应该会看到自己已通过身份验证,并且相关项目已设置为您的 PROJECT_ID
。
gcloud auth list
命令输出
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
命令输出
[core] project = <PROJECT_ID>
如果出于某种原因未设置项目,只需发出以下命令即可:
gcloud config set project <PROJECT_ID>
正在查找您的 PROJECT_ID
?检查您在设置步骤中使用的 ID,或在 Cloud Console 信息中心查找该 ID:
默认情况下,Cloud Shell 还会设置一些环境变量,这对您日后运行命令可能会很有用。
echo $GOOGLE_CLOUD_PROJECT
命令输出
<PROJECT_ID>
- 最后,设置默认可用区和项目配置。
gcloud config set compute/zone us-central1-f
您可以选择各种不同的可用区。如需了解详情,请参阅区域和可用区。
5. 创建 Cloud Dataproc 集群
启动 Cloud Shell 后,您可以使用命令行调用 Cloud SDK gcloud 命令或该虚拟机实例提供的其他工具。
选择要在本实验中使用的集群名称:
$ CLUSTERNAME=${USER}-dplab
我们首先创建一个新集群:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
包含两个工作器节点的默认集群设置应该足以满足本教程的需求。上面的命令包含 --zone
选项(用于指定将在其中创建集群的地理区域)和两个高级选项 --scopes
和 --tags
,您可以在下方使用这些选项启用的功能进行说明。如需了解如何使用命令行标志自定义集群设置,请参阅 Cloud SDK gcloud dataproc clusters create
命令。
6. 将 Spark 作业提交到您的集群
您可以通过 Cloud Dataproc API jobs.submit
请求、gcloud
命令行工具或 Google Cloud Platform Console 提交作业。您还可以使用 SSH 连接到集群中的机器实例,然后从实例运行作业。
让我们在 Cloud Shell 命令行中使用 gcloud
工具提交作业:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
作业运行时,您会在 Cloud Shell 窗口中看到输出结果。
按 Control-C 可中断输出。这将停止 gcloud
命令,但作业仍在 Dataproc 集群上运行。
7. 列出作业并重新连接
输出任务列表:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
最近提交的作业位于列表顶部。复制作业 ID 并将其粘贴到“jobId
”的位置上。该命令将重新连接到指定的作业并显示其输出:
$ gcloud dataproc jobs wait jobId
作业完成后,输出将包含 Pi 值的近似值。
8. 调整集群大小
如需运行更大规模的计算,您可能需要向集群添加更多节点以加快速度。借助 Dataproc,您可以随时向集群添加节点以及从中移除节点。
检查集群配置:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
通过添加一些抢占式节点来扩大集群:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
再次检查集群:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
请注意,除了原始集群说明中的 workerConfig
之外,现在还有一个 secondaryWorkerConfig
,其中包含用于抢占式工作器的两个 instanceNames
。新节点启动时,Dataproc 将集群状态显示为“准备就绪”。
由于您最初有两个节点,现在有四个节点,因此 Spark 作业的运行速度应该能快一倍左右。
9. 通过 SSH 连接到集群
通过 SSH 连接到主节点,该节点的实例名称始终是集群名称加上 -m
:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
当您首次在 Cloud Shell 上运行 SSH 命令时,它会在此处为您的账号生成 SSH 密钥。您可以选择一个口令,也可以暂时使用空口令,以后若需要,可以使用 ssh-keygen
更改口令。
在实例上,检查主机名:
$ hostname
由于您在创建集群时指定了 --scopes=cloud-platform
,因此可以在集群上运行 gcloud
命令。列出项目中的集群:
$ gcloud dataproc clusters list
完成后退出 SSH 连接:
$ logout
10. 检查代码
创建集群时,您添加了一个 --tags
选项,用于为集群中的每个节点添加标记。标记用于将防火墙规则附加到每个节点。您在此 Codelab 中未创建任何匹配的防火墙规则,但您仍然可以检查节点上的标记和网络上的防火墙规则。
输出主节点的说明:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
在输出末尾附近查找 tags:
,看看它包含 codelab
。
输出防火墙规则:
$ gcloud compute firewall-rules list
请注意 SRC_TAGS
列和 TARGET_TAGS
列。通过将标记附加到防火墙规则,您可以指定应在具有该标记的所有节点上使用该标记。
11. 关停集群
您可以通过 Cloud Dataproc API clusters.delete
请求、使用 gcloud dataproc clusters delete
可执行文件的命令行或 Google Cloud Platform Console 来关停集群。
下面我们使用 Cloud Shell 命令行关停该集群:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. 恭喜!
您学习了如何创建 Dataproc 集群、提交 Spark 作业、调整集群大小、使用 SSH 登录到您的主节点、使用 gcloud 检查集群、作业和防火墙规则,以及使用 gcloud 关停集群!
了解详情
- Dataproc 文档:https://cloud.google.com/dataproc/overview
- 通过控制台开始使用 Dataproc Codelab
许可
此作品已获得知识共享署名 3.0 通用许可和 Apache 2.0 许可。