kafka多分区只有一个在消费_Kafka - 来自同一组的多个消费者分配了相同的分区...

在升级到Kafka 0.9并使用新消费者API时,遇到问题:当增加消费者节点时,一个分区被分配给了多个消费者,导致消息重复处理。在日志中看到,分区14在不同机器间同时被分配和撤销,引发数据一致性问题。寻求解决方案。
摘要由CSDN通过智能技术生成

我已经在Kafka用户邮件列表上发布了这个,但没有得到任何回复所以我想我也会在这里尝试 .

我目前正在尝试升级我的软件以使用0.8.2的Kafka 0.9 . 我正在尝试切换到新的Consumer API,以便在我们的群集中添加或删除计算机时进行重新 balancer . 我遇到了一个问题,即当一台机器被添加到组中时,主题上的相同分区被分配给多个消费者很短的时间 . 这导致一些消息被处理多次,而我的目标只是一次 . 我按照Javadocs中的设置说明进行操作,并使用外部数据存储来在消耗和重新 balancer 时保存偏移量 .

在我的测试集群中,我最初开始使用2台机器和一台 生产环境 商 . 一切正常,每个消费者获得一半的分区 . 当我添加第三台机器时,它会分配一部分分区,但这些分区不会从两台初始机器中的一台撤销 . 以下是我的程序中的一些日志声明,希望它们有助于说明我的情况 .

分区14最初分配给机器1.机器1在添加机器3之前读取许多消息 . 分区14在启动时被分配给机器3,但是分区14没有从机器1撤销 . 两个机器然后在系统重新 balancer 之前在偏移3处读取相同的消息并且两者都可以访问分区14被撤销 . 然后,机器2在从机器1撤销之后被分配给分区14,但仍然被分配给机器3.在从机器3撤销之后,机器2是唯一可以访问分区14的机器 .

机器1(开始时打开)

2016-08-24 14:17:08 DEBUG KafkaStreamReader:351 - ASSIGNED: Assigning partition 14 for topic

assignments to worker with offset 0

2016-08-24 14:18:48 DEBUG KafkaStreamReader:312 - Committing topic assignments partition 14

offset 3

2016-08-24 14:19:38 DEBUG KafkaStreamReader:200 - partition = 14, offset = 3 (Message read

from kafka)

2016-08-24 14:19:38 DEBUG KafkaStreamReader:312 - Committing topic assignments partition 14

offset 4

2016-08-24 14:19:39 DEBUG KafkaStreamReader:338 - REVOKED: Committing for partition 14 of

topic assignments offset 4

机器2(开始时打开)

2016-08-24 14:19:51 DEBUG KafkaStreamReader:351 - ASSIGNED: Assigning partition 14 for topic

assignments to worker with offset 4

机器3(几分钟后开启)

2016-08-24 14:19:21 DEBUG KafkaStreamReader:351 - ASSIGNED: Assigning partition 14 for topic

assignments to worker with offset 3

2016-08-24 14:19:48 DEBUG KafkaStreamReader:200 - partition = 14, offset = 3 (Message read

from kafka - already read by machine 1)

2016-08-24 14:20:00 DEBUG KafkaStreamReader:338 - REVOKED: Committing for partition 14 of

topic assignments offset 4

我的集群正在运行Cloudera 5.7.0,其中Kafka版本为2.0.1-1.2.0.1.p0.5,对应于Kafka版本0.9.0.0 kafka2.0.1 283.(https://www.cloudera.com/documentation/kafka/latest/topics/kafka_packaging.html)

任何人都可以帮助解释我在这里做错了什么吗?如果有任何进一步的信息可以提供帮助,请告诉我,如果可以的话,我很乐意提供 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值