【问题标题】:Storm cannot fetch message from Kafka with the message: Got fetch request with offset out of rangeStorm 无法使用以下消息从 Kafka 获取消息:Got fetch request with offset out of range
【发布时间】:2015-12-29 16:31:22
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你能发布你用来生成 SpoutConfig 和 KafkaSpout 的代码吗?
  • @SQL.injection 感谢您的 cmets。最后我发现了我错过了什么。我将在下面回答我的问题。请参考它。 :)

标签: apache-kafka apache-storm


【解决方案1】:

最后,我发现了我错过了什么。 由于我的拓扑使用两个不同的 Kafka 源,我创建了两个 KafkaSpout 和不同的 SpoutConifg 实例,每个实例都分配给每个 KafkaSpout

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

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

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2020-11-27
    • 2016-10-16
    • 2017-02-23
    • 2019-09-23
    • 2021-04-13
    相关资源
    最近更新 更多