我有一个连接器,它使用两个主题。
一个主题有6个分区,第二个主题有2个分区(总共有8个分区)
当我将tasks.max设置在6下时,要使用的分区在任务之间很好地平衡(通过查看consumer_group)


但是,如果我在示例8中将tasks.max设置为高于6,那么在consumer_group中有两个没有主题属性的任务(所有8个任务都处于运行状态),因此有2个空闲任务


主题offset.storage.topic只有6个分区
连接器不可能拥有比主题offset.storage.topic的分区数更多的活动(不仅是正在运行)任务?
那么,值offset.storage.partitions与最大活动连接器任务相关吗?
合流医生说 ->
offset.storage.topic: 具有大量分区的主题(例如,25或50,就像Kafka的内置__consumer_offsets主题一样),以支持大型Kafka集群。
发布于 2021-07-18 19:27:08
在kafka-connect 2.7中
接收器连接器的最大活动任务数等于要使用的分区数最多的主题。
因为它使用的是RangeAssignor分区分配策略
(它与主题offset.storage.partitions的分区数无关)
活动任务是在接收器连接器的使用者组中分配分区的任务。
例子:
有两个主题,每个主题有10个分区
活动任务的最大数量为10 (如果我将task.max设置为12,消费者组中的2个任务没有要使用的分区)。
如果我向连接器conf添加具有15个分区的第三个主题,那么12个任务将接收要使用的分区,如果现在将task.max设置为17,那么在使用者组中只有15个任务处于活动状态。
我发现强制在使用者组的所有成员之间分配分区的唯一方法是设置
"consumer.override.partition.assignment.strategy": "org.apache.kafka.clients.consumer.RoundRobinAssignor"发布于 2021-07-18 11:44:29
tasks.max配置来自框架,并指定要为连接器创建的最大任务数。但是,可能会创建较少的任务。- https://docs.confluent.io/current/connect/managing/configuring.html
在这种情况下,框架决定它只需要#任务来处理负载,因此每个任务都处理相关的主题分区。从框架的角度来看,这是很好的,因为每个分区的顺序保证都没有被违反。
如果您了解更多关于加载模式的信息,并且希望为每个主题分区显式地拥有一个唯一的任务,您可以尝试将配置分解为单独的信任,每个主题都有一个相关分区数的tasks.max。
与最大活动连接器任务相关的
offset.storage.partitions?
-不,他们没有亲戚。你应该把它设为25 (默认)或更多.最好别碰它。
https://stackoverflow.com/questions/67483645
复制相似问题