kafka broker 0 因为与zookeeper连接失败被探针重启,启动后使用kafka.tools.GetOffsetShell
查询offset,部分分区显示为空,导致消费者报错Received unknown topic or partition error in ListOffset request for partition
$ kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list kafka-hs:9093 --topic topic_test --time -1
topic_test:23:3272
topic_test:32:
topic_test:41:3270
topic_test:59:
topic_test:50:3255
topic_test:53:3269
topic_test:35:
topic_test:44:3281
...
譬如上面这个topic,32、59、35分区的消息offset(不是消费者offset)显示为空,经查询这些partition的leader都在kafka-0上,而且这些partition并不是kafka-0为leader的所有partition,也就是部分partition的leader为kafka-0,但是它们显示正常。
重启kafka-0
后所有partition显示正常。
$ kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list kafka-hs:9093 --topic topic_test --time -1
topic_test:23:3272
topic_test:32:3274
topic_test:41:3270
topic_test:59:3196
topic_test:50:3255
topic_test:53:3269
topic_test:35:3201
topic_test:44:3281
...
猜测是kafka index数据损坏,但是kafka-0重启之后又加载正常了,似乎不是数据损坏问题。
请问大家,kafka.tools.GetOffsetShell
显示为空的机制是什么?不知有没有朋友研究过源码。
当前使用的kafka版本为1.1.0,zookeeper版本为3.4.12
部分显示为空,这个部分,应该是broker-0的部分。
(ps:图片不能上传,我测试了没问题...好像firefox不支持)
确实是broker-0中部分partition的offset显示为空,请问显示为空的内部机制是什么?
原以为是数据损坏,但是重启broker-0之后,offset显示正常了,说明不是数据损坏。
查询的是
__consumer_offsets
的信息,你看下你的__consumer_offsets
有没有副本。不然一旦存储
__consumer_offsets
的kafka节点宕了,就都不行了哥,我刚刚更新了一下问题。查询的不是__consumer_offsets这个topic,而是一个业务topic的消息offset,麻烦帮忙看一下,感谢
你的答案