web-dev-qa-db-ja.com

Kafka-このサーバーは、そのトピックパーティションのリーダーではありません

2つのブローカーkafka 0.10.2.0クラスターがあります。レプリケーション係数は2です。このKafkaに対して1.0.0 kafkaストリームアプリケーションを実行しています。私のkafkaストリームアプリケーションでは、プロデューサー構成にretries = 10 and retry.backoff.ms = 100があります

数分実行した後、Kakfa server.logで次のログを確認しました。このため、Kafkaストリームアプリケーションは「NOT_LEADER_FOR_PARTITION」例外をスローします。

考えられる理由は何ですか?私を助けてください。

[2017-12-12 10:26:02,583] ERROR [ReplicaFetcherThread-0-1], Error for partition [__consumer_offsets,22] to broker 1:org.Apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition. (kafka.server.ReplicaFetcherThread)
10
Rednam Nagendra

各トピックは1つまたは複数のブローカーによって提供されます-1つはリーダーで、残りのブローカーはフォロワーです。

プロデューサーは、すべてのフォロワーに内部的にデータを複製するリーダーブローカーに新しいメッセージを送信する必要があります。

あなたのプロデューサークライアントは正しいブローカーに接続せず、リーダーの代わりにフォロワーに接続し、このフォロワーはあなたの送信リクエストを拒否すると思います。

./kafka-topics.sh --zookeeper localhost:2181 --topic your_topic --describeを実行してみてください

Topic:your_topic    PartitionCount:3    ReplicationFactor:1 Configs:retention.ms=14400000
Topic: your_topic   Partition: 0    Leader: 2   Replicas: 2 Isr: 2
Topic: your_topic   Partition: 1    Leader: 0   Replicas: 0 Isr: 0
Topic: your_topic   Partition: 2    Leader: 1   Replicas: 1 Isr: 1

この例では、your_topicに3つのパーティションがあることがわかります。つまり、3つのブローカーすべてがそれぞれ異なるパーティションでそのトピックのリーダーであり、st broker 2partition 0broker 0のリーダーです。 broker 1partition 0のフォロワーです。

1
Gal Shaboodi

これらのプロパティを設定して、問題の解決に役立つかどうかを確認してください。

props.put(ProducerConfig.RETRIES_CONFIG, 10);  //increase to 10 from default of 0
props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG,   
    Integer.toString(Integer.MAX_VALUE)); // increase to infinity from default of 300 s

ソース

0
Anand