Kafka-该服务器不是该主题分区的领导者

Red*_*dra 7 apache-kafka apache-kafka-streams

我有两个代理kafka 0.10.2.0 cluster.Replication factor是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)
Run Code Online (Sandbox Code Playgroud)

Gal*_*odi 5

每个主题由一个或多个经纪人提供服务-一个是领导者,其余的经纪人是跟随者。

生产者需要向领导者经纪人发送新消息,领导者经纪人将数据内部复制到所有关注者。

我假设您的生产者客户端未连接到正确的代理,而是连接到关注者而不是领导者,并且该关注者拒绝了您的发送请求。

尝试跑步 ./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
Run Code Online (Sandbox Code Playgroud)

在此示例中,您可以看到your_topic有3个分区,这意味着所有3个经纪人都是该主题的负责人,每个人都位于不同的分区上,st broker 2是的领导者partition 0broker 0broker 1则是的跟随者partition 0

  • 感谢您的解释。但是,如何解决问题“ NOT_LEADER_FOR_PARTITION”?我应该在生产者中纠正什么? (3认同)
  • 如果我理解正确的话,重试 > 0 的生产者应该能够在后续重试中找到正确的领导者。 (2认同)
  • 我收到此错误,我应该采取什么措施 (2认同)