5

私は Kafka 0.8 と Zookeeper 3.3.5 を使用しています。実際、何の問題もなく消費しているトピックがたくさんあります。

最近、奇妙な動作をする新しいトピックをフィードして消費し始めました。消費されたオフセットが突然リセットされました。設定した auto.offset.reset ポリシー (実際には最小) を尊重しますが、トピックが突然オフセットをリセットする理由がわかりません。

私は高レベルのコンシューマーを使用しています。

ここに私が見つけたいくつかのエラーログがあります: 私たちはこのエラーログをたくさん持っています:

[2015-03-26 05:21:17,789] INFO ブローカ ID:1、ホスト:172.16.23.1、ポート:9092 からメタデータを取得しています。相関 ID は 47 で、1 つのトピック セット (MyTopic) (kafka.cl)
ient.ClientUtils$)
[2015-03-26 05:21:17,789] 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] ソケット エラーによる再接続の警告: null (kafka.consumer.SimpleConsumer)

そして、実際の問題が発生します。

[2015-03-26 05:21:47,551] 情報 (kafka.producer.SyncProducer) を生成するために 172.16.23.5:9092 に接続されました
[2015-03-26 05:21:47,552] 172.16.23.5:9092 (kafka.producer.SyncProducer) からの情報切断
[2015-03-26 05:21:47,553] INFO [ConsumerFetcherManager-1427047649942] パーティション ArrayBuffer([[MyTopic,0], initOffset 45268422051 の fetcher を br に追加)
oker id:5、ホスト:172.16.23.5、ポート: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)

ここでの質問: すでにこの動作を経験した人はいますか? auto.offset.reset が最大か最小かに関係なく、カフカがオフセットをリセットすることを決定したときに教えてくれる人はいますか?

ありがとうございました。

4

1 に答える 1

4

何が起こっているかというと、しばらくの間、トピックのデパイルが遅すぎるということです。

Kafka には、消費者がデータを取得したかどうかではなく、ディスクの使用状況や期間に基づく保持モデルがあります。ある時点で手遅れになり、必要な次のメッセージはすでに消去されており、kafka がデータを消去したために利用できなくなります。したがって、Current offset 45268422051 for partition [MyTopic,0] out of range; reset offset to 1948447612メッセージ。

次に、消費者はリセットポリシーを適用して、自分自身を再びブートストラップします。あなたの場合は最小です。

これは、バースト ワークフローがあり、データ保持の範囲外になる場合によくある問題です。脱毛速度を改善したか、バーストに耐えられるように保持ポリシーを増やしたため、おそらく消えました。

于 2016-04-07T09:40:14.130 に答える