【日更挑战】解决Kafka的Offset越界问题(未完)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【日更挑战】解决Kafka的Offset越界问题(未完)相关的知识,希望对你有一定的参考价值。

参考技术A 最近折腾公司的大数据平台,遇到了一个Kafka的消费者消费时无法正常启动,报 afka.common.OffsetOutOfRangeException 的错误。俗称就是Offset的数组越界。

其实到撰文的时候,问题还未解决,先把之前的思路理一理。

根据网上的教程,先查看当前我们这个topic有几个分区,具体命令如下

查出来目前是6个分区(0-5)。同时由于kafka的broker有4个,会发现每个分区都有两个broker承载数据,其中一个为leader。

其次看zookeeper中对应的offset位移是多少。这里比较奇怪的是,我只能在 /brokers/topics/TEST_TOPIC/partitions/0 (0可替换为1-5)中找到offset。而不是如网上说的在consumer/消费者组这个路径下。另外在以上路径中,看到值为null,所以尝试找到正确的offset并重置。

这时通过两个途径找,首先是看目录。从Kafka的配置里找到log.dirs,再去各个broker中找这个参数指定的目录,注意不是每个broker都有所有的分区数据,我这边一个broker基本有3个分区,或者作为leader,或者作为replica。

这里其实分辨不出哪个是earliest,哪个是lastest,特别的和第二种方法还不太一致。

第二个途径是使用命令,通过 kafka-run-class 命令可以运行一些Kafka提供的类进行管理。

其中-2是最小值,-1是最大值。

这个运行出来的结果,有些和第一种方法对不上。

我在zk上使用第二种方法set了offset,但是重启原来的yarn job,问题还是没有解决。

(等一旦解决,第一时间更新或另发文分享!)

以上是关于【日更挑战】解决Kafka的Offset越界问题(未完)的主要内容,如果未能解决你的问题,请参考以下文章

kafka实战-消费者offset重置问题

Springboot 整合Kafka 实现手动提交 offset

kafka重置到最新offset偏移量

kafka防止消息重复消费

kafka消费者和offset的关系,以及异常处理问题

php问题求助,Notice: Undefined offset: 1 ,我的数组下标没有越界啊?为啥会有这样的提示呢?