Gna*_*rik 5 java producer-consumer apache-kafka kafka-consumer-api apache-zookeeper
我正在使用 Kafka 0.8 和 zookeeper 3.3.5。实际上,我们有十几个主题正在消费,没有任何问题。
最近,我们开始喂食和消费一个行为怪异的新话题。消耗的偏移量突然重置。它尊重我们设置的 auto.offset.reset 策略(实际上是最小的),但我不明白为什么这个话题突然重置了它的偏移量。
我正在使用高级消费者。
这是我发现的一些错误日志: 我们有一堆这样的错误日志:
[2015-03-26 05:21:17,789] INFO 从代理 id:1,host:172.16.23.1,port:9092 获取元数据,1 个主题的相关 id 为 47 Set(MyTopic) (kafka.cl) ient.ClientUtils$) [2015-03-26 05:21:17,789] ERROR Producer 连接到 172.16.23.1:9092 不成功(kafka.producer.SyncProducer) java.nio.channels.ClosedByInterruptException 在 java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202) 在 sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:681) 在 kafka.network.BlockingChannel.connect(BlockingChannel.scala:57) 在 kafka.producer.SyncProducer.connect(SyncProducer.scala:141) 在 kafka.producer.SyncProducer.getOrMakeConnection(SyncProducer.scala:156) 在 kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:68) 在 kafka.producer.SyncProducer.send(SyncProducer.scala:112) 在 kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:53) 在 kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:88) 在 kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:66) 在 kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:51)
每次发生此问题时,我都会看到 WARN 日志:
[2015-03-26 05:21:30,596] 警告由于套接字错误而重新连接:空(kafka.consumer.SimpleConsumer)
然后真正的问题发生了:
[2015-03-26 05:21:47,551] INFO 连接到 172.16.23.5:9092 进行生产(kafka.producer.SyncProducer) [2015-03-26 05:21:47,552] INFO 从 172.16.23.5:9092 断开连接 (kafka.producer.SyncProducer) [2015-03-26 05:21:47,553] 信息 [ConsumerFetcherManager-1427047649942] 为分区 ArrayBuffer([[MyTopic,0], initOffset 45268422051 to br) 添加了提取器 oker id:5,host:172.16.23.5,port:9092]) (kafka.consumer.ConsumerFetcherManager) [2015-03-26 05:21:47,553] 信息 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],开始(kafka.consumer.Cons umerFetcherThread) [2015-03-26 05:21:50,388] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 45268422051 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread) [2015-03-26 05:21:50,490] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 1948447612 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread) [2015-03-26 05:21:50,591] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 1948447612 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread) [2015-03-26 05:21:50,692] 错误 [ConsumerFetcherThread-MyTopic_group-1427047649884-699191d4-0-5],分区 [MyTopic,0] 的当前偏移量 1948447612 超出范围;将偏移量重置为 1948447612 (kafka.consumer.ConsumerFetcherThread)
现在的问题是:是否有人已经经历过这种行为?有没有人可以告诉我 Kafka 何时决定重置其偏移量 auto.offset.reset 是最大还是最小?
谢谢你。
发生的情况是你在一段时间内过于缓慢地讨论你的话题。
Kafka 有一个保留模型,该模型不基于消费者是否获取数据,而是基于磁盘使用情况和/或时间段。在某些时候,你来得太晚了,由于 kafka 已经清理了数据,你需要的下一条消息已经被删除,并且不再可用。因此,这些Current offset 45268422051 for partition [MyTopic,0] out of range; reset offset to 1948447612
消息。
然后,您的消费者应用您的重置策略来再次引导自身,在您的情况下是最小的。
当您的工作流程突发且有时超出数据保留范围时,这是一个常见问题。它可能会消失,因为您提高了脱堆速度,或者增加了保留策略以便能够在突发情况下生存。
归档时间: |
|
查看次数: |
11849 次 |
最近记录: |