暂停 Dataproc 集群 - Google 计算引擎

Posted

技术标签:

【中文标题】暂停 Dataproc 集群 - Google 计算引擎【英文标题】:Pausing Dataproc cluster - Google Compute engine 【发布时间】:2016-04-06 03:13:06 【问题描述】:

有没有办法暂停 Dataproc 集群,以便在我不主动运行 spark-shell 或 spark-submit 作业时不收费?集群管理说明在此链接:https://cloud.google.com/sdk/gcloud/reference/beta/dataproc/clusters/

仅显示如何销毁集群,但我已经安装了 spark cassandra 连接器 API。除了创建一个我每次都需要安装的映像之外,我是唯一的选择吗?

【问题讨论】:

【参考方案1】:

一般来说,最好的做法是将用于自定义集群的步骤提炼成一些设置脚本,然后使用 Dataproc 的 initialization actions 在集群部署期间轻松自动执行安装。

这样,如果您想在多个并发 Dataproc 集群上进行相同的设置,或者想要更改机器类型,或者接收次要版本错误,您可以轻松地重现自定义项,而无需手动参与修复了 Dataproc 偶尔发布的问题。

目前确实没有官方支持的暂停 Dataproc 集群的方法,这在很大程度上仅仅是因为能够进行可重复的集群部署以及下面列出的其他几个考虑因素,这意味着 99% 的时间最好使用初始化 -操作自定义,而不是就地暂停集群。也就是说,存在可能的短期黑客行为,例如进入 Google Compute Engine page,选择属于您要暂停的 Dataproc 集群的实例,然后单击“停止”而不删除它们。

Compute Engine 每小时费用和 Dataproc 的每 vCPU 费用仅在底层实例运行时产生,因此当您手动“停止”实例时,您不会产生 Dataproc 或 Compute Engine 的实例小时费用,尽管Dataproc 仍将集群列为“正在运行”,但如果您转到 Dataproc 集群摘要页面的“VM 实例”标签,则会看到警告。

应该然后只需从Google Compute Engine page 页面单击“开始”即可让集群再次运行,但请务必考虑以下注意事项:

    集群有时可能无法再次启动到健康状态;任何使用本地 SSD 的东西都已经无法停止并干净地重新启动,但除此之外,如果关闭不有序,或者甚至用户安装的设置可能已损坏,Hadoop 守护程序可能会因任何原因无法将重要的内容刷新到磁盘以未知方式启动过程。 即使虚拟机“停止”,它们也依赖于底层的 Persistent Disks 剩余,因此即使在“暂停”时,您仍会继续为这些虚拟机产生费用;如果我们假设每月每 GB 0.04 美元,并且每个 Dataproc 节点默认有 500GB 磁盘,那么每个实例继续支付约 0.028 美元/小时;通常,您的数据更易于访问且成本更低,只需将其放入 Google Cloud Storage 进行长期存储,而不是尝试将其长期保存在 Dataproc 集群的 HDFS 上。 如果您过于依赖手动集群设置,那么当您需要调整集群大小、更改机器类型或更改区域等时,重新设置将变得更加困难。相比之下,通过 Dataproc 的初始化操作,您可以使用 Dataproc's cluster scaling feature 调整集群大小并为创建的新工作器自动运行初始化操作。

更新

Dataproc 最近推出了停止和启动集群的功能:https://cloud.google.com/dataproc/docs/guides/dataproc-start-stop

【讨论】:

嗨丹尼斯,你知道如何在重新调整集群时运行initialization-actions(正如你在 3 中提到的)吗?因为我遇到了这个问题,并且当新机器产生时初始化脚本没有运行。谢谢 初始化操作绝对应该已经自动在通过扩展集群创建的新机器上运行 - 您是否有示例集群 uuid 无法在新节点上运行初始化操作?

以上是关于暂停 Dataproc 集群 - Google 计算引擎的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Dataproc 集群中安装 python 包

Google Cloud Dataproc 无法使用初始化脚本创建新集群

所有作业完成后自动关闭 Google Dataproc 集群

在 google-dataproc 的 Spark 集群中的 pyspark 作业中使用外部库

如何提交依赖于 google dataproc 集群的 pyspark 作业

在启动 Google DataProc 集群以与 Jupyter 笔记本一起使用时,如何包含其他 jar?