Apache kafka 卡夫卡风暴喷口:获取偏移量超出范围的提取请求

Apache kafka 卡夫卡风暴喷口:获取偏移量超出范围的提取请求,apache-kafka,apache-storm,apache-zookeeper,Apache Kafka,Apache Storm,Apache Zookeeper,我们的Storm拓扑中有一个场景,Kafkaspout无法使用来自主题的任何消息。喷口连续记录相同的警告消息: 获取了偏移量超出范围的提取请求 喷口被配置为从zookeeper读取最后一个提交偏移量,并且该场景中的偏移量大于Kafka中的最新消息偏移量。我们也在研究主题偏移重置的原因 目前,我们通过观察风暴日志中的超出范围警告来解决此问题,删除zookeeper偏移条目,然后重新部署拓扑。如果提交了无效偏移,则使用客户端配置“auto.offset.reset”。它接受“最小”和“最大”值。如果

我们的Storm拓扑中有一个场景,Kafkaspout无法使用来自主题的任何消息。喷口连续记录相同的警告消息:

获取了偏移量超出范围的提取请求

喷口被配置为从zookeeper读取最后一个提交偏移量,并且该场景中的偏移量大于Kafka中的最新消息偏移量。我们也在研究主题偏移重置的原因


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

如果提交了无效偏移,则使用客户端配置“auto.offset.reset”。它接受“最小”和“最大”值。如果未设置该值,将引发异常(如您的情况)

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


请参见

在我的案例中,之所以会发生这种情况,是因为我重新创建了卡夫卡主题,我的卡夫卡作者正在订阅该主题

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

只需打开Zookeeper CLI,然后删除属于KafkaSpout的使用者“组id”的“节点”所在的路径。
要获得帮助,请参考,

您最近是否将您的话题指向了一个新的主题名称?您是否有多个具有相同ID的喷口?问题主要发生在开发环境中,因此我可以看到提交给zookeeper的“误导性”偏移量。我希望配置KafkSpout以放弃获取超出范围偏移量的无休止循环,并返回最早或最新偏移量。我们的Kafka配置用于风暴KafkSpout,我在Kafka/SpoutConfig.Update我的答案中没有看到类似于“auto.offset.reset”的属性。最新的/Earliessttime()行为没有改变。通过PartitionManager和KafkaUtils,我可以看到返回的最新或最早的偏移量,但PartitionManager会忽略它们,以支持zookeeper提交的值。Kafka消费客户端的标准行为是在提交的偏移量无效的情况下使用最新/最早。如果偏移量有效,当然应该使用,最新/最早设置无效。所以客户端总是从它离开的地方恢复(只要提交的偏移量仍然有效)。如果您有一个提交的偏移量,并希望重置到特定的时间点,则需要手动执行此操作,而KafkaSpout根本不支持此操作--您需要在外部执行此操作。也许这些问题有帮助:也许Storm作为Kafka消费者客户端的KafkaSpout实现很糟糕。这是我们在观察场景时所做的工作。删除zookeeper kafka条目并重新部署拓扑。
...
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]
...