首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flink并行度和kafka分区在数据生产中有什么关系?

flink并行度和kafka分区在数据生产中有什么关系?
EN

Stack Overflow用户
提问于 2021-06-16 15:45:44
回答 1查看 157关注 0票数 0

我有一个关于将数据下沉到Kafka主题中的流作业和另一个消耗kafka主题中的数据的流作业。我的Kafka集群的分区号配置为3

当我将作业的并行度设置为4时,只有3个插槽在忙于生成数据,并且只有3个消费者子任务获得了数据。

考虑到任务槽数量的限制,我想将并行性改为1。但是,当我将作业的并行度设置为1时,只有1 consumer task slot获得了数据。

在我看来,即使我将并行度设置为1,我仍然将数据下沉到3个分区中,并且可以有3个消费子任务使用数据。

为什么只有一个消费子任务在这里工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-16 17:14:32

每个FlinkKafkaConsumer分区只能被一个Kafka子任务消费,但一个FlinkKafkaConsumer可以消费一个或多个分区。假设一个主题有3个分区,最多可以分配3个FlinkKafkaConsumers的工作。

Flink任务槽最多可以包含作业中每个任务的一个实例。插槽的数量等于最大可用并行度。

类似地,Kafka分区的数量设置了最大可实现并行度的上限。

当并行度设置为1时,将只使用一个插槽,并且该插槽只能有一个FlinkKafkaConsumer (和一个FlinkKafkaProducer)。但是,一个使用者可以处理所有3个分区。如果并行度设置为3,那么3个使用者可能很忙,每个使用者在自己的插槽中处理一个分区。当并行度设置为4时,一个插槽将是空闲的。

在接收器中,默认情况下,FlinkKafkaProducer的每个实例将以循环方式写入每个分区。如果希望控制将每个记录写入哪个分区,则可以提供自定义FlinkKafkaPartitioner,也可以使用KafkaSerializationSchema并为每个ProducerRecord指定分区。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67998454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档