Storm无法通过以下消息从Kafka获取消息:获取偏移超出范围的获取请求

时间:2015-10-01 14:53:05

标签: apache-kafka apache-storm

我是Storm世界的新手。在我的拓扑中,我正在使用来自Kafka的数据,并使用SpoutConfig

通过一些测试,我收到了以下警告信息:

  

2015-10-01 23:31:51.753 s.k.KafkaUtils [WARN]获取偏移超出范围的获取请求:[85970]   2015-10-01 23:31:51.755 s.k.PartitionManager [WARN]使用新的偏移量:0

我的SpoutConfigignoreZkOffsets设置为false所以我希望在提交新拓扑时,它会从存储在Zookeeper中的最新偏移消耗。

但是,当我终止旧拓扑并提交新拓扑时,会显示警告消息,并且新拓扑不能从偏移中消耗。如果我忘了什么,你能给我一个好主意吗?

1 个答案:

答案 0 :(得分:1)

最后,我发现了我错过的东西。 由于我的拓扑结构使用了两个不同的Kafka源代码,因此我创建了两个KafkaSpoutSpoutConifg个实例,每个实例都分配给每个KafkaSpout

但是当我实例化每个SpoutConfig实例时,我将相同的id传递给每个实例。这导致只有一个带有id的znode,即使我希望从两个不同的来源消费。

因此,两个PartitionManager尝试使用相同的单个znode,其中有一个偏移信息。如果PartitionManager中的一个尝试使用具有另一侧的偏移量的新元组,则会显示警告消息。