Запуск в LeaderNotAvailableException при использовании Kafka 0.8.1 с Zookeeper 3.4.6
Я установил стабильную версию kafka (0.8.1 с 2.9.2 Scala) в соответствии с их веб-сайтом, и я запускаю ее с анкетом 3 node 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)
Я также должен сказать, что это работало первоначально в течение нескольких дней, а затем внезапно возникла любая проблема, возникшая в этой проблеме.
Ответы
Ответ 1
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), так что проблема может быть решена легче.
Ответ 2
У меня была такая же проблема. Оказывается, Kafka требует, чтобы имя машины было разрешимо для подключения к себе.
I обновил имя хоста на моей машине, и после перезапуска zookeeper и kafka эта тема может быть написана правильно.
Ответ 3
Я решил эту проблему, добавив запись в /etc/hosts
для 127.0.0.1
с полным именем хоста:
127.0.0.1 x4239433.your.domain.com x4239433
Производитель и потребитель начали нормально работать.
Ответ 4
У меня была та же проблема. В конце концов мне пришлось удалить стопку узлов Kafka, а затем следовать рекомендациям здесь о том, как удалить темы Kafka. Как только я избавился от сломанных тем, я смог снова начать Кафку.
Я хотел бы знать, есть ли лучший подход и как этого избежать в будущем.
Ответ 5
Я столкнулся с этой проблемой пару раз и, наконец, понял, почему у меня возникла проблема. Я также добавлю результаты здесь. Я нахожусь в Linux VM, короткий ответ: у меня была эта проблема, так как моя виртуальная машина получила новый IP-адрес. Если вы посмотрите под конфигурационными файлами и откройте server.properties, вы увидите эту строку
advertised.host.name = xx.xx.xx.xxx или localhost.
Убедитесь, что этот IP-адрес соответствует вашему текущему IP-адресу, вы можете проверить свой IP .
Как только я исправил это, все начало работать правильно. Я использую версию 0.9.0.0.
Надеюсь, это поможет кому-то.
Ответ 6
У меня была та же проблема, я решил JDK от 1,7 до 1,6
Ответ 7
была та же проблема. убедитесь, что у вас есть хотя бы одна тема на каждом разделе, который использует ваш потребитель/производитель. Zookeeper не найдет лидера раздела, если нет тем, которые используют этот раздел
Ответ 8
Это проблема с 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)
Теперь он отлично работает. Надеюсь, это поможет.
Ответ 9
Итак, еще один возможный ответ - IP-адрес в advertised.hostname
в кафке 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 решает эту проблему.
Ответ 10
У меня возникла такая же проблема, когда я пытался играть с Kafka в моей локальной системе (Mac OS X El Capitan). Проблема была в моем zookeeper, это не относится к правильному файлу конфигурации.
Перезапустите zookeeper, а затем Kafka и выполните следующую команду. проверьте, нет ли Лидера. Если лидера нет, удалите эту тему и заново создайте ее.
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
Надеюсь, это поможет.
Ответ 11
Я столкнулся с проблемой с Kafka
, Zookeeper
pod в Openshift и Kafka был включен TLS.
Мне пришлось добавить следующие переменные среды в Kafka,
-
KAFKA_ZOOKEEPER_CONNECT
-
KAFKA_SSL_KEYSTORE_LOCATION
-
KAFKA_SSL_TRUSTSTORE_LOCATION
-
KAFKA_SSL_KEYSTORE_PASSWORD
-
KAFKA_SSL_TRUSTSTORE_PASSWORD
-
KAFKA_ADVERTISED_LISTENERS
-
KAFKA_INTER_BROKER_LISTENER_NAME
-
KAFKA_LISTENERS
И после установки переменных мне пришлось удалить и воссоздать контейнеры, чтобы они работали.