数据湖探索 DLI-典型场景示例:配置弹性资源池队列扩缩容策略:注意事项
注意事项
- 建议对流批业务实施资源池的精细化管理,将Flink实时流类型的作业与SQL批处理类型的作业分别置于独立的弹性资源池中。
优势在于:Flink实时流任务具有常驻运行的特质,确保其稳定运行而不会强制缩容,进而避免任务中断和系统不稳定。
而SQL批处理类型的作业在独立的资源池中能够更加灵活地进行扩缩容,显著提升扩缩容的成功率和操作效率。
- 在全天的任意一个时间段内,弹性资源池中所有队列的最小CU数之和需要小于等于弹性资源池的最小CU数。
- 在全天的任意一个时间段内,弹性资源池中任意一个队列的最大CU必须小于等于弹性资源池的最大CU。
- 同一队列不同扩缩容策略的时间段区间不能有交集。
- 弹性资源池队列中的扩缩容策略时间段仅支持整点的时间段设置,并且包含设置的开启时间,不包含设置的结束时间,例如设置时间段00-09,则时间段范围为:[00:00,09:00)。默认的扩缩容策略不支持时间段配置修改。
- 弹性资源池扩缩容策略生效规则为:在任意一个时间段周期内,优先满足所有队列的最小CU数。剩余的CU(弹性资源池最大CU-所有队列的最小CU数之和)则根据配置的优先级顺序分配:
- 如果队列的优先级不同,根据配置的优先级顺序分配,直到剩余的CU数分配完成。
- 如果队列的优先级相同,资源会被随机分配到某一队列,如果分配后资源还有剩余会随机分配到剩下的某一队列中,直到剩余的CU数分配完成。
表2 弹性资源池扩缩容CU分配场景说明 场景
弹性资源池CU数分配说明
弹性资源池当前最大CU为256CU,添加了两个队列,分别为队列A和队列B。两个队列设置的扩缩容策略如下:
- 队列A扩缩容策略:优先级5,时间段:00:00-9:00,最小CU是32,最大CU是128
- 队列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,则优先将64CU分配给队列B,剩余的96CU全部分配给队列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随机分配给两个队列。