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

时间:2016-10-26 16:25:57

标签: 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]
...

Spout配置为从zookeeper读取最后一个提交偏移量,并且此方案中的偏移量大于Kafka中的最新消息偏移量。我们还在研究为什么主题偏移正在重置。

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

2 个答案:

答案 0 :(得分:0)

如果提交了无效的偏移量,则客户端配置" auto.offset.reset"用来。它接受价值观"最小"和#34;最大"。如果未设置该值,则抛出异常(如您的情况)。

对于KafkaSpout,您可以通过变量KafkaConfig#startOffsetTime设置此值,将其设置为kafka.api.OffsetRequest.EarliestTime()kafka.api.OffsetRequest.LatestTime()

请参阅http://storm.apache.org/releases/1.0.2/storm-kafka.html

答案 1 :(得分:0)

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

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

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