Flink- 有状态算子的扩缩容 -12
1有状态算子的扩缩容
(1)流式应用的一个基本需求是根据输入数据到达的速率的变化调整算子并行度
(2)对于有状态算子需要把状态重新分组,分配到与之前数量不等的并行任务上
(3)Flink提供四种扩缩容方式
2.带有键值分区状态的算子-1
(1)带有键值分区状态的算子在扩缩容时,会根据新任务数量对键值重新分区,
(2)不是每个键值实施再分配
(3)所有键值分为不同的键值组,每个键值组包含部分键值
(4)Flink以键值组为单位分配给不同任务
3.带有算子列表状态的算子-2
(1)并行算子的列表条目会被统一收集起来,均匀分配到更多或更少任务上
(2)如果列表条目数小于算子新设置并行度,部分任务在启动时的状态就可能为空
4.带有算子联合列表状态的算子-3
(1)带有算子联合列表状态的算子会在扩缩容时把状态列表条目广播到全部任务
(2)由任务自己决定哪些条目需要保留,哪些条目需要丢弃
5.带有广播状态的算子-4
(1)带有广播状态的算子在扩缩容时,会把状态拷贝到所有任务上
(2)确保所有任务状态相同
(3)在缩容的时候由于状态经过复制不会丢失,可以简单的停止,多出的任务
评论