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

时间:2017-12-12 07:16:29

标签: apache-kafka apache-kafka-streams

我有两个经纪人kafka 0.10.2.0 cluster.Replication factor是2.我正在对这个Kafka运行1.0.0 kafka流应用程序。在我的kafka流应用程序中,生成器配置有Geocoder

运行几分钟后,我在Kakfa server.log中观察了以下日志。由于这个Kafka流应用程序正在抛出'NOT_LEADER_FOR_PARTITION'异常。

可能的原因是什么?请帮帮我。

retries = 10 and retry.backoff.ms = 100

2 个答案:

答案 0 :(得分:1)

每个主题由一个或多个经纪人提供服务 - 一个是领导者,剩下的经纪人是粉丝。

生产者需要向领导者Broker发送新消息,Broker在内部将数据复制给所有粉丝。

我假设您的生产者客户端没有连接到正确的Broker,它连接到跟随者而不是领导者,并且此关注者拒绝您的发送请求。

尝试运行./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 0上的领导者{{1} }和broker 0broker 1上的关注者。

答案 1 :(得分:0)

尝试设置这些属性,看看它是否有助于解决问题:

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

Source