Kafka Storm Spout:收到偏移量超出范围的获取请求

sod*_*yer 5 apache-kafka apache-storm apache-zookeeper

我们的 Storm 拓扑中有一个场景,其中 KafkaSpouts 无法使用来自主题的任何消息。Spout 连续记录相同的 WARN 消息:

收到偏移量超出范围的获取请求

...
2016-10-26 11:11:31.070 o.a.s.k.KafkaUtils [WARN] Partition{host=somehost.org:9092, topic=my-topic, partition=0} Got fetch request with offset out of range: [3]
2016-10-26 11:11:31.078 o.a.s.k.KafkaUtils [WARN] Partition{host=somehost.org:9092, topic=my-topic, partition=0} Got fetch request with offset out of range: [3]
2016-10-26 11:11:31.084 o.a.s.k.KafkaUtils [WARN] Partition{host=somehost.org:9092, topic=my-topic, partition=0} Got fetch request with offset out of range: [3]
2016-10-26 11:11:31.098 o.a.s.k.KafkaUtils [WARN] Partition{host=somehost.org:9092, topic=my-topic, partition=0} Got fetch request with offset out of range: [3]
2016-10-26 11:11:31.104 o.a.s.k.KafkaUtils [WARN] Partition{host=somehost.org:9092, topic=my-topic, partition=0} Got fetch request with offset out of range: [3]
2016-10-26 11:11:31.111 o.a.s.k.KafkaUtils [WARN] Partition{host=somehost.org:9092, topic=my-topic, partition=0} Got fetch request with offset out of range: [3]
...
Run Code Online (Sandbox Code Playgroud)

Spout 配置为从 Zookeeper 读取最后提交的偏移量,并且在这种情况下该偏移量大于 Kafka 中的最新消息偏移量。我们还在调查主题偏移量重置的原因。

目前我们通过观察storm日志中的超出范围警告,删除zookeeper偏移条目,然后重新部署拓扑来解决该问题。

Sar*_*rma 0

就我而言,发生这种情况是因为我重新创建了我的 KafkaSpout 订阅的 Kafka 主题。

特定分区的偏移量保存在 Zookeeper 中,如果删除主题然后再次创建,您将必须从 Zookeeper 手动删除偏移量信息。

只需打开 Zookeeper CLI,然后删除属于 KafkaSpout 的消费者“group-id”的“节点”所在的路径即可。如需帮助,请参阅https://www.tutorialspoint.com/zookeeper/zookeeper_cli.htm