我们在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偏移条目,然后重新部署拓扑。
答案 0 :(得分:0)
如果提交了无效的偏移量,则客户端配置" auto.offset.reset"用来。它接受价值观"最小"和#34;最大"。如果未设置该值,则抛出异常(如您的情况)。
对于KafkaSpout
,您可以通过变量KafkaConfig#startOffsetTime
设置此值,将其设置为kafka.api.OffsetRequest.EarliestTime()
或kafka.api.OffsetRequest.LatestTime()
。
答案 1 :(得分:0)
就我而言,这种情况正在发生,因为我重新创建了我的KafkaSpout订阅的Kafka主题。
特定分区的偏移量保存在Zookeeper中,如果删除主题然后再次创建,则必须从Zookeeper手动删除偏移信息。
只需打开Zookeeper CLI,然后删除'节点'属于消费者' group-id'您的KafkaSpout存在。 如需帮助,请参阅https://www.tutorialspoint.com/zookeeper/zookeeper_cli.htm