使用kafka 0.8.1和zookeeper 3.4.6时遇到leadernotavailableexception

wecizke3  于 2021-06-07  发布在  Kafka
关注(0)|答案(12)|浏览(374)

我根据他们的网站安装了kafka的稳定版本(0.8.1和2.9.2 scala),并使用3节点zookeeper集成(3.4.6)运行它。我试图创建一个测试主题,但一直看到没有为该主题的分区指定引线:

[kafka_2.9.2-0.8.1]$ ./bin/kafka-topics.sh --zookeeper <zookeeper_ensemble> --describe --topic test-1
Topic:test-1    PartitionCount:1    ReplicationFactor:3 Configs:
    Topic: test-1   Partition: 0  **Leader: none**  Replicas: 0,1,2**Isr:**

我尝试使用控制台生成器写入主题,但遇到了leadernotavailableexception:

[kafka_2.9.2-0.8.1]$ ./kafka-console-producer.sh --broker-list <broker_list> --topic test-1

hello world

[2014-04-22 11:58:48,297] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,321] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,322] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)

[2014-04-22 11:58:48,445] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,467] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,467] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)

[2014-04-22 11:58:48,590] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,612] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,612] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)

[2014-04-22 11:58:48,731] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,753] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,754] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)

[2014-04-22 11:58:48,876] WARN Error while fetching metadata [{TopicMetadata for topic test-1 -> 
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException  (kafka.producer.BrokerPartitionInfo)

[2014-04-22 11:58:48,877] ERROR Failed to send requests for topics test-1 with correlation ids in [0,8] (kafka.producer.async.DefaultEventHandler)

[2014-04-22 11:58:48,878] ERROR Error in handling batch of 1 events (kafka.producer.async.ProducerSendThread)
kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
    at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:90)
    at kafka.producer.async.ProducerSendThread.tryToHandle(ProducerSendThread.scala:104)
    at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(ProducerSendThread.scala:87)
    at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(ProducerSendThread.scala:67)
    at scala.collection.immutable.Stream.foreach(Stream.scala:547)
    at kafka.producer.async.ProducerSendThread.processEvents(ProducerSendThread.scala:66)
    at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:44)

我还应该说,这是工作最初的几天,然后突然之间,任何一个主题,创建了这个失踪领导人的问题。

9wbgstp7

9wbgstp71#

我也有同样的问题。最后我不得不停止删除Kafka节点,然后按照这里的建议如何删除Kafka主题。一旦我摆脱了那些破碎的主题,我就能够成功地重新开始Kafka。
我想知道是否有更好的方法,以及如何避免这种情况发生在未来。

p1tboqfb

p1tboqfb2#

我也有同样的问题。原来,kafka要求机器的主机名是可解析的,以便连接回自身。
我在我的机器上更新了主机名,重新启动zookeeper和kafka之后,可以正确地编写主题。

kyks70gy

kyks70gy3#

在config/server.properties中添加“advised.host.name=localhost”,然后重新启动kafka服务器。它对我有用

cl25kdpy

cl25kdpy4#

我面对这个问题 Kafka , Zookeeper pod在openshift中,kafka被tls启用。我不得不给Kafka添加以下环境变量,
Kafka\uZookeeper\u连接
Kafka密钥库位置
Kafka\u ssl \u信任库\u位置
Kafka密码
Kafka密码
Kafka的听众
Kafka国际经纪人听众姓名
Kafka的听众
在设置了变量之后,我不得不删除并重新创建pod,让它工作。

biswetbf

biswetbf5#

我已经通过在 /etc/hosts 为了 127.0.0.1 使用完全限定的主机名:

127.0.0.1       x4239433.your.domain.com x4239433

生产者和消费者开始工作良好。

z4bn682m

z4bn682m6#

我也遇到了同样的问题,解决了jdk从1.7到1.6的问题

kninwzqo

kninwzqo7#

这是jdk的问题。
我已经安装了openjdk

java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

但我将其更改为oracle jdk(请点击以下链接:http://www.webupd8.org/2012/06/how-to-install-oracle-java-7-in-debian.html)

java version "1.7.0_80" Java(TM) SE Runtime Environment (build
1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

现在可以了。希望这有帮助。

tnkciper

tnkciper8#

当我试图在本地系统(macos x el capitan)中使用Kafka时,我遇到了完全相同的问题。问题是我的zookeeper,它没有引用正确的配置文件。重新启动zookeeper,然后kafka并执行以下命令。检查leader是否为none。如果leader为none,请删除该主题并重新创建它。

kafka-topics --zookeeper localhost:2181 --describe --topic pytest

输出如下

Topic:pytest    PartitionCount:1    ReplicationFactor:1 Configs:
Topic: pytest   Partition: 0    Leader: 0   Replicas: 0 Isr: 0

我希望这会有帮助。

3npbholx

3npbholx9#

我也有同样的问题。确保消费者/生产者使用的每个分区上至少有一个主题。如果没有主题使用分区,zookeeper将找不到分区的前导

mgdq6dx1

mgdq6dx110#

所以,还有一个可能的答案,即 advertised.hostname 在Kafka config/server.properties 可能输入错误并有多余的空格。
对我来说

advertised.host.name=10.123.123.211_\n (where _ is an extra space)

而不是正确的

advertised.host.name=10.123.123.211\n

出于某种原因,这是工作了6个月没有问题,大概是一些库更新删除了轻松查找的ip地址修剪多余的空间。
对配置文件的简单修复和kafka的重启解决了这个问题。

ggazkfy8

ggazkfy811#

Kafka使用外部协调框架(默认情况下是zookeeper)来维护配置。似乎配置现在与Kafka日志数据不同步。在本例中,我将删除受影响的主题数据和相关的zookeeper数据。
对于测试环境:
住手 Kafka-server 以及 Zookeeper-server 删除这两个服务的数据目录,默认情况下是 /tmp/kafka-log 以及 /tmp/zookeeper .
开始 Kafka-server 以及 Zookeeper-server 再一次
创建新主题
现在您可以再次使用该主题。
对于生产环境:
由于Kafka主题存储在不同的目录中,您应该删除特定的目录。您还应该删除 /brokers/{broker_id}/topics/{broken_topic} 通过使用zookeeper客户端从zookeeper。
请仔细阅读Kafka文档,以确保配置结构,然后再做任何蠢事。Kafka正在推出一个删除主题的功能(kafka-330),这样问题就可以更容易地得到解决。

46scxncf

46scxncf12#

我已经遇到这个问题好几次了,终于明白为什么我会有这个问题。我也要在这里补充这些发现。我在linux虚拟机上,简单的回答是,自从我的虚拟机获得了一个新的ip之后,我就遇到了这个问题。如果您查看配置文件并打开server.properties,您将看到这一行
advised.host.name=xx.xx.xx.或localhost。
确保此ip与您当前的ip匹配,您可以在此处检查您的ip。
一旦我修好了,一切都开始正常工作。我使用的是0.9.0.0版本。
我希望这能帮助别人。

相关问题