弹性资源池扩容或缩容
弹性资源池的“扩容”或“缩容”,本质上就是指调整资源池的“实际CUs”。
在弹性资源池中:
- 实际CUs:弹性资源池当前分配的实际资源大小(单位CUs)。即实际拥有的计算资源数量。
弹性资源池使用实际CUs计费:
- 如果是按需计费模式,那么按照实际CUs大小收费。参考弹性资源池计费模式说明。
- 如果是包年/包月计费模式,那么规格的部分按包周期计费,(实际CUs-规格)的部分按需计费。为了满足该场景下更优惠的计费,则可以通过规格变更的方式,将弹性资源池的规格扩大到与实际CUs一致,则所有实际CUs按包周期计费,整体相比原来更优惠。详细操作指导请参考弹性资源池规格变更。
- 弹性资源池扩容:就是增加实际CUs,即资源池的计算资源数量变大。扩容的最大值就是弹性资源池CU范围的最大值。
- 弹性资源池缩容:就是减少实际CUs,即资源池的计算资源数量变小。缩容的最小值就是弹性资源池CU范围的最小值。
即弹性资源池的实际CUs会在CU范围的最小值和最大值之间动态变化。
了解更多弹性资源池的基本概念请参考基本概念。
约束与限制
- 当弹性资源池中添加队列、删除队列时,会触发弹性资源扩或缩容。
- 而弹性资源池缩容可能会触发缩容含有shuffle数据的节点,会导致Spark Task重算,引起Spark作业和SQL作业内部自动重试,当作业重试超过限制会导致作业执行失败,需用户重新执行作业。
- Spark2.3版本作业需要升级作业版本后才能支持运行中动态缩容功能。
- Spark Streaming作业、Flink作业在运行过程中所在节点无法缩容,需要暂停作业或迁移作业至其他弹性资源池后才能完成缩容。
- 以下操作触发的扩容和缩容均在操作后的下一个整点生效:
- 调整队列的CU范围
- 弹性资源池规格变更
- 弹性资源池的CU设置
- 通过增加队列调整弹性资源池的实际CUs,立即生效。
弹性资源池扩容或缩容的触发方式
操作类型 |
实际CUs变化 |
触发方式 |
---|---|---|
扩容 |
实际CUs增加 |
max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} > 当前实际CUs,系统自动扩容 |
缩容 |
实际CUs减少 |
max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} < 当前实际CUs,系统自动缩容 |
详细的计算说明请参考图1。
示例
本节操作介绍不同计费模式的弹性资源池扩容和缩容的示例:
- 场景:
- 弹性资源池当前规格:64CUs
- 弹性资源池CU范围:64CUs - 128CUs
- 弹性资源池实际CUs:64CUs
- 弹性资源池目标:扩容到128CUs
- 操作步骤:
- 调大现有队列的最大CU或增加新队列,使队列CU总和=128CUs。
在下一个整点,系统自动比较“实际CUs”和“max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} ”
如果max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} > 当前实际CUs,系统触发扩容,扩容后的实际CUs的计算方法请参考图1。
- 变更弹性资源池的规格:
- 在DLI管理控制台左侧,选择“资源管理 > 弹性资源池”。
- 选择需要扩容的弹性资源池,单击“操作”列“更多”中的“包周期CU变更”。
- 在“包周期CU变更”页面,“变更方式”选择“扩容”,将规格从64CUs调整为128CUs。
- 实际CUs变为128CUs,CU范围最小值自动同步为128CUs。
- 调大现有队列的最大CU或增加新队列,使队列CU总和=128CUs。
- 结果:
弹性资源池实际CUs:128CUs
弹性资源池CU范围:128CUs - 128CUs
- 场景:
- 弹性资源池当前规格:128CUs
- 弹性资源池CU范围:128CUs - 128CUs
- 弹性资源池实际CUs:128CUs
- 弹性资源池目标:缩容到64CUs
- 操作步骤:
- 调小队列的最大CU或删除部分队列,使队列CU总和等于64CUs。
在下一个整点,系统自动比较“实际CUs”和“max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} ”
如果max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} < 当前实际CUs,系统触发缩容,但是但由于规格仍为128CUs,实际CUs不会自动下降。
因此还需继续执行下一步骤。
- 变更弹性资源池的规格,将规格从128CUs调整为64CUs。
- 在DLI管理控制台左侧,选择“资源管理 > 弹性资源池”。
- 选择需要扩容的弹性资源池,单击“操作”列“更多”中的“包周期CU变更”。
- 在“包周期CU变更”页面,“变更方式”选择“缩容”,将规格从128CUs调整为64CUs。
- 手动将弹性资源池CU范围改成64CUs-128CUs
- 实际CUs变为64CUs(下一个整点生效)
- 调小队列的最大CU或删除部分队列,使队列CU总和等于64CUs。
- 结果:
弹性资源池实际CUs:64CUs
弹性资源池CU范围:64CUs-128CUs
- 场景:
- 弹性资源池CU范围:64CUs- 128CUs
- 弹性资源池实际CUs:64CUs
- 弹性资源池目标:扩容到96CUs
- 操作步骤:
- 调大现有队列的最大CU或增加新队列,使队列CU总和=96CUs。
- 系统触发扩容,实际CUs变为max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} 。
- 实际CUs自动上升为96CUs。
- 调整后:
- 弹性资源池实际CUs:96CUs
- 弹性资源池CU范围:64CUs - 128CUs
按需资源池的实际CUs随队列CU总和动态变化。
- 场景
- 弹性资源池CU范围:64CUs - 128CUs
- 弹性资源池实际CUs:96CUs
- 弹性资源池目标:缩容到64CUs
- 操作步骤
- 调小队列的最大CU或删除部分队列,使队列CU总和等于64CUs。
- 系统触发缩容,实际CUs下降为max{(min[sum(队列maxCU),弹性资源池maxCU]), 弹性资源池minCU} 。
- 实际CUs自动下降为64CUs。
- 结果:
- 弹性资源池实际CUs:64CUs
- 弹性资源池CU范围:64CUs - 128CUs
按需资源池缩容也无需手动变更规格。