关于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任务的并行度,以应对流量的波峰波谷。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。