问题描述
我有两个代理 kafka 0.10.2.0 集群.复制因子是 2.我正在针对这个 Kafka 运行 1.0.0 kafka 流应用程序.在我的 kafka 流应用程序中,生产者配置具有 retries = 10 和 retry.backoff.ms = 100
I have two broker kafka 0.10.2.0 cluster.Replication factor is 2. I am running 1.0.0 kafka stream application against this Kafka. In my kafka stream application, producer config has retries = 10 and retry.backoff.ms = 100
运行几分钟后,我在 Kakfa server.log 中观察到以下日志.由于此 Kafka 流应用程序抛出NOT_LEADER_FOR_PARTITION"异常.
After running few minutes, I observed following logs in Kakfa server.log. Due to this Kafka stream application is throwing 'NOT_LEADER_FOR_PARTITION' exception.
可能的原因是什么?请帮帮我.
What may be the possible reason? Please help me.
[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)
推荐答案
每个主题由一个或多个 Broker 提供服务 - 一个是领导者,其余的经纪人是追随者.
Each topic is served by one or multiple Brokers - one is leader and the remaining brokers are followers.
生产者需要向领导者 Broker 发送新消息,后者在内部将数据复制到所有追随者.
A producer needs to send new messages to the leader Broker which internally replicate the data to all followers.
我假设您的生产者客户端没有连接到正确的 Broker,它连接到了一个追随者而不是领导者,并且这个追随者拒绝了您的发送请求.
I assume, that your producer client does not connect to the correct Broker, its connect to a follower instead of the leader, and this follower rejects your send request.
尝试运行 ./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 个 broker 都是该主题的领导者,每个都在不同的分区上,st broker 2
是 partition 0
和 broker 0
和 broker 1
是 partition 0
的关注者.
In this example you can see that your_topic
have 3 partitions meaning all 3 brokers are leaders of that topic each on different partition, s.t broker 2
is leader on partition 0
and broker 0
and broker 1
are followers on partition 0
.
这篇关于Kafka - 该服务器不是该主题分区的领导者的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!