自动缩放 Azure Synapse Analytics Apache Spark 池
Azure Synapse Analytics Apache Spark 池的自动缩放功能自动缩放群集实例中的节点数。 在创建新的 Azure Synapse Analytics Apache Spark 池的过程中,如果已选中自动缩放,可设置最小和最大节点数(最多 200 个节点)。 自动缩放功能随后监视负载的资源需求,并增加或减少节点数。 此功能不会产生额外费用。
指标监视
自动缩放会持续监视 Spark 实例并收集以下指标:
指标 | 说明 |
---|---|
总待处理 CPU | 开始执行所有待处理作业所需的核心总数。 |
总待处理内存 | 开始执行所有待处理作业所需的总内存(以 MB 为单位)。 |
总可用 CPU | 活动节点上所有未使用核心的总和。 |
总可用内存 | 活动节点上未使用内存的总和(以 MB 为单位)。 |
每个节点的已使用内存 | 节点上的负载。 使用了 10 GB 内存的节点的负载会被认为比使用了 2 GB 内存的工作节点的负载更大。 |
每 30 秒检查一次上述指标。 自动缩放将根据这些指标做出纵向扩展和纵向缩减决策。
基于负载的缩放条件
检测到以下情况时,自动缩放将发出缩放请求:
纵向扩展 | 纵向缩减 |
---|---|
总待处理 CPU 大于总可用 CPU 的时间超过 1 分钟。 | 总待处理 CPU 小于总可用 CPU 的时间超过 2 分钟。 |
总待处理内存大于总可用内存的时间超过 1 分钟。 | 总待处理内存小于总可用内存的时间超过 2 分钟。 |
对于纵向扩展,Azure Synapse 自动缩放服务将计算需要多少个新节点才能满足当前 CPU 和内存需求,然后发出纵向扩展请求来添加所需数量的节点。
对于纵向缩减,根据执行程序数、每个节点的应用程序主机以及当前 CPU 和内存需求,自动缩放会发出删除特定数量节点的请求。 此服务还会根据当前作业执行情况,检测待删除的节点。 纵向缩减操作首先关闭节点,然后将其从群集中删除。
注意
有关更新和强制将自动缩放配置应用于现有 Spark 池的说明。 如果在 Azure 门户中启用了“强制应用新设置”或者在 PowerShell 中启用了 ForceApplySetting
,则会终止所有现有 Spark 会话,并立即应用配置更改。 如果未选择此选项,则配置将应用于新的 Spark 会话,并且不会终止现有会话。
入门
使用自动缩放功能创建无服务器 Apache Spark 池
若要启用自动缩放功能,请在正常池创建过程中完成以下步骤:
在“基本信息”选项卡上,选中“启用自动缩放”复选框。
为以下属性输入所需的值:
- 最小节点数。
- 最大节点数。
初始节点数将为最小值。 此值定义创建实例时实例的初始大小。 最小节点数不能少于三个。
或者,如果执行程序要求在 Spark 作业的不同阶段大不相同,或者已处理的数据量随时间波动,可选择启用执行程序的动态分配。 通过启用执行程序的动态分配,可根据需要使用容量。
启用动态分配时,它允许作业在指定的最小和最大执行程序数范围内缩放执行程序数。
Apache Spark 可通过以下代码配置执行程序的动态分配:
%%configure -f
{
"conf" : {
"spark.dynamicAllocation.maxExecutors" : "6",
"spark.dynamicAllocation.enabled": "true",
"spark.dynamicAllocation.minExecutors": "2"
}
}
通过代码指定的默认值将替代通过用户界面设置的值。
在此示例中,如果作业只需要 2 个执行程序,它将仅使用 2 个执行程序。 当作业需要更多执行程序时,它将扩展到 6 个执行程序(1 个驱动程序,6 个执行程序)。 当作业不需要执行程序时,它将停用执行程序。 如果它不需要节点,它将释放节点。
注意
maxExecutors 将保留配置的执行程序数。 结合示例来看,即使你仅使用 2 个执行程序,它也将保留 6 个执行程序。
因此,启用动态分配后,执行程序将根据执行程序的利用率纵向扩展或缩减。 这可确保根据正在运行的作业的需要来预配执行程序。
最佳做法
请考虑纵向扩展或纵向缩减操作的延迟
完成缩放操作可能需要 1 到 5 分钟。
准备进行纵向缩减
在实例纵向缩减过程中,自动缩放会使节点处于解除授权状态,以便不会在该节点上启动新的执行程序。
正在运行的作业将继续运行并完成。 挂起作业将和往常一样等待调度,可用节点更少。
注意
默认情况下,spark.yarn.executor.decommission.enabled 设置为 true,这会使未充分利用的节点自动关闭以优化计算效率。 如果更希望进行不太激进的纵向缩减,则可以将此配置设置为 false。
后续步骤
设置新 Spark 池快速入门创建 Spark 池