关于Flink弹性扩缩容有个疑问:
比如Kafka12个分区,Flink任务(KafkaSource -> Process -> BDSink)On Yarn application模式,初始化的并行度也是12,但是Kafka生产者的流量有波峰波谷,波峰时就会出现反压,此时期望sink端自动增加并行度(申请TaskManager),缩容同理(释放TM)这种能做到吗,有点类似于Spark3.x中的动态资源申请
https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/elastic_scaling/#adaptive-%E8%B0%83%E5%BA%A6%E5%99%A8
以下为热心网友提供的参考意见
理论上如果你有16个slot,现在用了8个在消费,但是出现峰值计算瓶颈,那么是否可以把相同的任务再提交一次,再给一个并行8的任务,这样就有两个一样的task在消费一个组,可能需要人为操作这个 ,此回答整理自钉群“【③群】Apache Flink China社区”
以下为热心网友提供的参考意见
Flink的弹性扩缩容功能可以实现类似的需求。你可以使用Reactive模式或者Adaptive调度器来实现自动调整并行度。
-
Reactive模式:在这种模式下,Flink Job会使用集群中所有的资源。当增加TaskManager时,Job会自动扩容;当删除TaskManager时,Job会自动缩容。Flink会管理Job的并行度,始终尽可能地使用最大值。
-
Adaptive调度器:Adaptive调度器可以基于现有的Slot调整Job的并行度。它会在Slot数目不足时,自动减少并行度;当有新的Slot加入时,Job将会自动扩容至配置的并行度。
这两种方式都可以实现根据Kafka生产者的流量变化来自动调整Flink任务的并行度,以应对流量的波峰波谷。