Запуск в 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

И после установки переменных мне пришлось удалить и воссоздать контейнеры, чтобы они работали.