正在安排 start/stop 个 DataProc 集群

Scheduling start/stop DataProc clusters

根据提供的数据处理文档,它说:

To help avoid incurring Google Cloud charges for an inactive cluster, use Dataproc's Cluster Scheduled Deletion feature when you create a cluster. This feature provides options to delete a cluster:

  • after a specified cluster idle period
  • at a specified future time
  • after a specified period that starts from the time of submission of the cluster creation request

然而,我正在寻找的是允许我自动安排集群 activity 的东西,例如我希望集群仅在工作日和工作时间处于活动状态。
这样我就可以避免产生额外的成本,而不必手动停止(或者更确切地说只是删除,因为它看起来来自 DataProc 文档)并每天重新创建集群。

为此,在 Compute Engine 中,我能够为集群的 VM 创建一个计划来停止它们。
尽管通过使用此方法,VM 通过此计划停止,但我仍然在 DataProc 中看到集群“运行”。

我是否仍在产生费用?如果是,是否有任何类似的替代方案可以在 DataProc 中进行调度?

作为奖励问题,是否可以将计划应用于具有自动缩放策略的集群?

满足您要求的最佳方法是使用 Cloud Composer with Dataproc start and stop APIs

如果您停止底层 VM,Dataproc 也会停止对已停止的 VM 收费,因为 Dataproc billing 是基于核心小时数的。但这并不是节省成本的最安全可靠的方法,我相信 Dataproc 停止有一些逻辑来确保停止是安全的。我们绝对应该更喜欢 Dataproc stop API 而不是直接停止虚拟机。但请注意,无论采用哪种方式,您仍需为已停止的虚拟机支付永久磁盘费用。所以考虑把你的输入和输出数据保存在GCS中,当你需要做数据处理时创建集群,然后删除。重新创建集群还将为您提供重新启动集群无法提供的最新更新和错误修复。

A​​utoscaling 不会删除主节点,作为 best practice,您的策略应该避免扩展主要 worker 而只扩展次要 worker,因为主要 worker 需要保留 HDFS 数据(如果 EFM启用)。所以如果你想完全停止集群以避免成本,自动缩放不是一个好的选择。