kafka的partition是不是应该和slot一一对应?我的一个和window有关的应用在slot数目不等于partition的时候会不出结果,另一个单纯读写的应用使用一个slot消费全部partition是可以的。您聊不了解这里面的机制? 本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 点击这里欢迎加入感兴趣的技术领域群。
这个问题比较宽泛,涉及到的内容太多了,我只了解一点,所以从简单来回答,如果不对,还请见谅 1、slot: flink 的 task manager 组件可以配置多个slot(多个算子的job,如果都 chain 在一起,就可以在一个 TM 的一个 slot 里面执行,如果有keyby或者parallesm 不同的时候,前后的算子就不能在同一个 slot 里面执行,但是可以在一个 TM 里面,比如一个 TM 配置两个 slot,就可以),简单可以认为 TM 是一个 进程,多个 slot 是里面的不同线程,同一个线程里面的算子,数据可以直传,不同线程就需要通信了 2、kafka 的 partition: 严格来说是和 slot 没有关系的,但是 flink 在读 kafka 的时候默认是这样的: source 的最大并行度不能大于 kafka 的分区数(多也只是多得部分拿不到数据,出于吞吐量和性能的考虑,一般是建议 source 的并行度和 kafka 的分区数一致,这样每个并发可以读一个分区,效率比较高,但是数据少的时候一个并发读100个分区都没关系); 这里还有一点额外的内容就是,flink 最大并发数等于 最小 slot 数,因为同一个算子的不同并发,是不可以在同一个slot 里面的(也可能 算子比较多,TM 的 slot 用完了,需要多开 TM的情况,所有是 等于最小 slot )
一个和window有关的应用在slot数目不等于partition的时候会不出结果 : 这个应该是理解有点问题,可以详细下问题 另一个单纯读写的应用使用一个slot消费全部partition是可以的 : 这个上面有,其实是 source 的并行度 和 partition的问题,两边的个数其实是不影响程序结果的,只是表现不同,source 多就会有部分没有数据,partition多就会有一个source 的并行读多个 partiton
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。