Kafka 消费者偏移超出范围,没有为分区配置重置策略
Posted
技术标签:
【中文标题】Kafka 消费者偏移超出范围,没有为分区配置重置策略【英文标题】:Kafka consumer offsets out of range with no configured reset policy for partitions 【发布时间】:2016-09-16 04:21:27 【问题描述】:我在启动 Kafka 消费者时收到异常。
org.apache.kafka.clients.consumer.OffsetOutOfRangeException: 未配置分区重置策略的偏移量超出范围test-0=29898318
我正在使用带有 Java 7 的 Kafka 版本 9.0.0。
【问题讨论】:
【参考方案1】:所以您正在尝试访问当前不可用的主题(test
)分区(0
)中的偏移量(29898318
)。
这可能有两种情况
-
您的主题分区
0
可能没有那么多消息
您在偏移量29898318
的邮件可能已在保留期限前删除
为避免这种情况,您可以执行以下操作之一:
-
将
auto.offset.reset
配置设置为 earliest
或 latest
。
您可以找到有关此here 的更多信息
您可以通过以下方式获得可用于主题分区的smallest offset
运行以下 Kafka 命令行工具
命令:
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list <broker-ip:9092> --topic <topic-name> --time -2
希望这会有所帮助!
【讨论】:
谢谢哥们,我试试这个但是不行。auto.offset.reset
应该是 latest
,`最早` 或 none
试试latest
在auto.offset.reset=latest
时收到此错误。必须配置一个新的group.id
来清理 Kafka 的偏移状态,然后消费者开始工作。
@BdEngineer retention_period
与 group.id
没有关系。设置新的group.id
会刷新消费者组的元(在代理处)。由于这是一种极端情况,因此没有永久(可配置?)解决方案。【参考方案2】:
我在运行具有特定更改日志主题配置的 Kafka Streams 状态存储时遇到了这个 SO 问题:
cleanup.policy=compact,delete
保留 4 天
如果 Kafka Streams 仍然有一个快照文件指向一个不再存在的偏移量,the restore consumer is configured to fail。它不会回退到最早的偏移量。当很少有数据进入或应用程序关闭时,可能会发生这种情况。在这两种情况下,如果在更改日志保留期内没有提交,则不会更新快照文件。 (这是基于分区)
解决此问题的最简单方法是停止您的 kafka 流应用程序,删除其本地状态目录并重新启动您的应用程序。
【讨论】:
检查 kafka 流应用程序的“state.dir”配置设置; kafka.apache.org/10/documentation/streams/developer-guide/…以上是关于Kafka 消费者偏移超出范围,没有为分区配置重置策略的主要内容,如果未能解决你的问题,请参考以下文章
Apache Kafka:使用java方式操作消费组和重置分区偏移量(admin api)
golang kafka Shopify/sarama 消费者重置新增分区偏移量并进行重新消费