如何让 HDInsight/Spark 集群在空闲时收缩?

How to make a HDInsight/Spark cluster shrink when idle?

我们在 Azure HDInsight 上使用 Spark 2.2 进行临时探索和批处理作业。

这些作业应该 运行 在 5x 中型 VM 集群上正常。他们是 1. notebooks(Zeppelin with Livy.spark2 magics) 2. 与 Livy 运行 编译的 jars.

我必须记得在不使用时将此集群缩减为 1 个工作人员,以节省资金。 (如果可能的话,0 个工人会很好)。

我希望 Spark 为我管理这个...当作业开始时,首先将集群扩展到最小大小,然后在完成时暂停约 10 分钟。在没有乔布斯的闲置期后,再次缩小规模。

我听说 Azure Databricks 可能是这个用例的更好解决方案。

您可以使用 PowerShell 或 Azure 经典 CLI 来扩展 up/down 集群。但是您可能需要编写一个脚本来跟踪集群资源使用情况并自动缩容。

这是一个 powershell 语法

Set-AzureRmHDInsightClusterSize -ClusterName <Cluster Name> -TargetInstanceCount <NewSize>

这是一个 PowerShell 工作流运行手册,可帮助您根据需要自动执行扩展或缩小 HDInsight 群集的过程

https://gallery.technet.microsoft.com/scriptcenter/Scale-your-HDInsight-f57bb4d8

您可以使用以下选项手动缩放它(即使您的问题是如何自动缩放 up/down,我认为这对想要手动缩放 up/down 的人有用)

下面是link一篇文章,解释了使用 PowerShell 或 Classic CLI 扩展集群的不同方法(记住:最新的 CLI 不支持扩展功能)

https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-scaling-best-practices

如果想让Spark动态处理,Azure Databricks是最好的选择(但它只是Spark集群,没有Hadoop组件(Hive除外))。作为 HDInsight - Spark 不是 Azure 托管服务,不会解决您的用例。

下面是一个新集群的图像(在 Azure Data bricks 中)- 我突出显示了一个 "enable auto scaling option",它将允许您在执行作业时动态扩展。