首页 > 解决方案 > 如何让 HDInsight/Spark 集群在空闲时收缩?

问题描述

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

这些作业应该在 5x 中型 VM 集群上运行良好。它们是 1. 笔记本(Zeppelin 与 Livy.spark2 魔法) 2. 与 Livy 一起运行的已编译 jar。

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

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

标签: azureapache-sparkhadoop-yarnazure-hdinsightlivy

解决方案


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

这是一个powershell语法

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

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

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

或者

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

手动缩放

下面是一篇文章的链接,该链接解释了使用 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 数据块中)——我突出显示了一个“启用自动缩放选项”,它允许您在执行作业时动态缩放。

在此处输入图像描述


推荐阅读