调整弹性资源池中队列的扩缩容策略
弹性资源池上可以添加多个不同队列用于作业运行,具体添加弹性资源池添加队列的操作可以参考创建弹性资源池并添加队列。添加完队列后,可以根据不同队列计算资源使用量的波峰和波谷和优先级来配置要扩缩容的CU数,从而来保障作业的稳定运行。
注意事项
- 在全天的任意一个时间段内,弹性资源池中所有队列的最小CU数之和必须小于等于弹性资源池的最小CU数。
- 在全天的任意一个时间段内,弹性资源池中任意一个队列的最大CU必须小于等于弹性资源池的最大CU。
- 同一队列不同扩缩容策略的时间段区间不能有交集。
- 弹性资源池队列中的扩缩容策略时间段仅支持整点的时间段设置,并且包含设置的开启时间,不包含设置的结束时间,例如设置时间段00-09,则时间段范围为:[00:00,09:00)。默认的扩缩容策略不支持时间段配置修改。
- 弹性资源池扩缩容策略生效规则为:在任意一个时间段周期内,优先满足所有队列的最小CU数,剩余的CU(弹性资源池最大CU-所有队列的最小CU数之和)则根据配置的优先级顺序分配,直到剩余的CU数分配完成。
- 队列扩容成功后,系统开始对扩容的CU进行计费,直到缩容成功停止对扩容的CU计费。因此,要注意如果业务没有需求的情况下,要及时清理释放资源,否则不管CU是否真正的使用,都会一直计费。
表1 弹性资源池扩缩容CU分配场景说明(无任务场景) 场景
弹性资源池CU数分配说明
弹性资源池当前最大CU为256CU,添加了两个队列,分别为队列A和队列B。两个队列设置的扩缩容策略如下:
- 队列A扩缩容策略:优先级5,时间段:00:00-9:00,最小CU是32,最大CU是64
- 队列B扩缩容策略:优先级10,时间段:00:00-9:00,最小CU是64,最大CU是128
到了00:00-9:00时间段:
- 弹性资源池优先满足两个队列的最小CU,队列A先分配32CU,队列B分配64CU,剩余CU数为160CU:弹性资源池的最大CU-两个队列的最小CU之和=256-32-64=160CU。
- 剩余CU数根据优先级高低来分配,因为队列B的优先级高于队列A,则优先将128CU分配给队列B,剩余的32CU全部分配给队列A。
弹性资源池当前最大CU为96CU,添加了两个队列,分别为队列A和队列B。两个队列设置的扩缩容策略如下:
- 队列A扩缩容策略:优先级5,时间段:00:00-9:00,最小CU是32,最大CU是64
- 队列B扩缩容策略:优先级10,时间段:00:00-9:00,最小CU是64,最大CU是128
到了00:00-9:00时间段:
- 弹性资源池优先满足两个队列的最小CU,队列A先分配32CU,队列B分配64CU,剩余CU数为0CU:弹性资源池的最大CU-两个队列的最小CU之和=96-32-64=0CU。
- 因为剩余的CU数已经没有,则停止分配。
弹性资源池当前最大CU为128CU,添加了两个队列,分别为队列A和队列B。两个队列设置的扩缩容策略如下:
- 队列A扩缩容策略:优先级5,时间段:00:00-9:00,最小CU是32,最大CU是64
- 队列B扩缩容策略:优先级10,时间段:00:00-9:00,最小CU是64,最大CU是128
到了00:00-9:00时间段:
- 弹性资源池优先满足两个队列的最小CU,队列A先分配32CU,队列B分配64CU,剩余CU数为32CU:弹性资源池的最大CU-两个队列的最小CU之和=128-32-64=32CU。
- 按照优先级,则优先将剩余的32CU分配给B队列后停止分配。
弹性资源池当前最大CU为128CU,添加了两个队列,分别为队列A和队列B。两个队列设置的扩缩容策略如下:
- 队列A扩缩容策略:优先级5,时间段:00:00-9:00,最小CU是32,最大CU是64
- 队列B扩缩容策略:优先级5,时间段:00:00-9:00,最小CU是64,最大CU是128
到了00:00-9:00时间段:
- 弹性资源池优先满足两个队列的最小CU,队列A先分配32CU,队列B分配64CU,剩余CU数为32CU:弹性资源池的最大CU-两个队列的最小CU之和=128-32-64=32CU。
- 因为两个队列的优先级相同,则剩余32CU随机分配给两个队列。
表2 弹性资源池扩缩容CU分配场景说明(有任务场景) 场景
弹性资源池实际CUs
队列A资源分配
队列B资源分配
弹性资源池CU数分配说明
弹性资源池添加了两个队列,分别为队列A和队列B。两个队列设置的扩缩容策略如下:
- 队列A扩缩容策略:时间段:00:00-9:00,最小CU是32,最大CU是64
- 队列B扩缩容策略:00:00-9:00,最小CU是64,最大CU是128
192CUs
64CUs
128CUs
当弹性资源池实际cu大于等于两个队列最大
cu之和,队列都分配最大值
96CUs
32CUs
64CUs
弹性资源池会优先满足两个队列的最小CU,
两个队列分配了最小CU后,无可用资源进行分配
128CUs
32CUs-64CUs
64CUs-96CUs
弹性资源池会优先满足两个队列的最小CU,即队列A先分配32CUs,队列B分配64CUs,有剩余32CUs可供分配。
剩余部分按照队列的负载以及队列优先级进行分配。队列实际CU会在列出的范围内变化。
弹性资源池队列管理
- 在左侧导航栏单击“资源管理 > 弹性资源池”,可进入弹性资源池管理页面。
- 选择要操作的弹性资源池,在“操作”列,单击“队列管理”,进入弹性资源池队列管理界面。
- 在队列管理界面会显示添加的所有队列列表信息。具体参数说明如下:
表3 弹性资源池队列管理界面参数说明 参数名
参数描述
名称
弹性资源池添加的队列名称。
类型
弹性资源池添加的队列类型。
- SQL队列。
- 通用队列。
时间段
弹性资源池队列扩缩容策略的开始和结束时间范围。时间区间包括开始时间,不包括结束时间即[开始时间, 结束时间)
最小CUs
弹性资源池队列扩缩容策略配置的最小CU数。
最大CUs
弹性资源池队列扩缩容策略配置的最大CU数。
优先级
弹性资源池队列扩缩容策略的优先级。优先级范围为1到100,数字越小,优先级越低。
执行引擎
添加的队列类型为“SQL队列”时执行引擎为spark。
添加的队列类型为“通用队列”时执行引擎可以是spark和flink,当前界面显示为--。
创建时间
弹性资源池添加队列的时间。
企业项目
队列所属的企业项目。
弹性资源池支持添加不同企业项目的队列资源。
所有者
弹性资源池添加队列的用户名。
操作
- 编辑:重新修改或者添加弹性资源池队列的扩缩容策略。
- 删除:删除当前弹性资源添加的队列。
图1 弹性资源池队列管理
- 选择要操作的队列,在“操作”列,单击“编辑”,进入到编辑队列界面。
- 在编辑队列界面,根据您当前操作场景,分别对应以下操作:
图2 编辑队列界面
- 新增扩缩容策略:单击“新增”,添加新的扩缩容策略,分别对“优先级”、“时间段”、“最小CU”和“最大CU”参数设置,单击“确定”完成操作。
- 修改扩缩容策略:直接修改已有记录的扩缩容策略参数,单击“确定”完成操作。
- 删除扩缩容策略:在对应扩缩容策略所在行单击“删除”,单击“确定”删除已有的优先级设置。
“优先级”和“时间段”参数说明如下:
- 优先级:默认为1,设置范围为1-100,参数值越大优先级越高。
- 时间段:
- 时间段设置仅支持整点,时间区间包括开始时间,不包括结束时间即[开始时间, 结束时间)。
- 例如当前选择的时间段范围为:01--17,则表示当前规则时间范围为[01, 17)。
- 不同优先级的时间段区间不能有交集。
- 最大最小CU:
- 在全天的任意一个时间段内,弹性资源池中所有队列的最小CU数之和必须小于等于弹性资源池的最小CU数。
- 在全天的任意一个时间段内,弹性资源池中任意一个队列的最大CU必须小于等于弹性资源池的最大CU。
- 设置完成后,单击“结果图形化”,查看所有队列的扩缩容策略设置情况。
图3 弹性资源池队列扩缩容策略结果图形化
图4 弹性资源池队列扩缩容策略图像化展示
- 后续到了队列扩缩容策略配置的时间,会生成一个扩缩容任务。具体可以在“作业管理 > SQL作业”下查看作业类型为“SCALE_QUEUE”的作业。