apache-zookeeper apache-kafka

apache zookeeper - Ejecución de LeaderNotAvailableException al usar Kafka 0.8.1 con Zookeeper 3.4.6



apache-zookeeper apache-kafka (11)

Instalé la versión estable de kafka (0.8.1 con 2.9.2 Scala) según su sitio web y la estoy ejecutando con un conjunto de 3 nodos de cuidador de zoo (3.4.6). Traté de crear un tema de prueba, pero sigo viendo que no hay un líder asignado a la partición del tema:

[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:**

Traté de escribir el tema de todos modos utilizando el productor de la consola, pero me encontré con la excepción 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)

También debo decir que esto funcionó inicialmente durante unos días y de repente, cualquier tema que se creó tenía este problema con el líder que faltaba.


Enfrenté el problema con Kafka , Zookeeper pod en Openshift y Kafka con TLS habilitado. Tuve que agregar las variables de entorno a continuación a 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

Y después de establecer las variables, tuve que eliminar y volver a crear los pods, para que funcione.


Entonces, una respuesta más: la dirección IP en advertised.hostname en kafka config/server.properties puede ser mal escrita con un espacio adicional.

En mis casos

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

en lugar de la correcta

advertised.host.name=10.123.123.211/n

Por alguna razón, esto funcionó durante 6 meses sin problemas, y es de suponer que alguna actualización de la biblioteca eliminó la búsqueda relajada de la dirección IP que recortaba el espacio adicional.

Una solución simple del archivo de configuración y el reinicio de kafka resuelve este problema.


Es el problema con JDK.

He instalado 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)

Pero cambié eso a Oracle jdk (siga este enlace: 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)

Ahora funciona bien. Espero que esto ayude.


Había resuelto este problema agregando una entrada en /etc/hosts para 127.0.0.1 con nombre de host completo:

127.0.0.1 x4239433.your.domain.com x4239433

Productor y consumidor comenzaron a funcionar bien.


Kafka usa un marco de coordinación externo (por defecto, Zookeeper) para mantener la configuración. Parece que la configuración ahora está fuera de sincronización con los datos de registro de Kafka. En este caso, eliminaría los datos del tema afectado y los datos relacionados de Zookeeper.

Para el entorno de prueba:

  1. Detener Kafka-server y Zookeeper-server
  2. Elimine los directorios de datos de ambos servicios, por defecto son /tmp/kafka-log y /tmp/zookeeper .
  3. Inicie Kafka-server y Zookeeper-server nuevamente
  4. Crear un nuevo tema

Ahora puede volver a trabajar con el tema.

Para el entorno de producción:

Como los temas de Kafka se almacenan en directorios diferentes, debe eliminar directorios en particular. También debe eliminar /brokers/{broker_id}/topics/{broken_topic} de Zookeeper utilizando un cliente Zookeeper.

Lea detenidamente la documentación de Kafka para asegurarse de la estructura de configuración antes de hacer algo estúpido. Kafka está implementando una función para eliminar temas ( KAFKA-330 ), para que el problema pueda resolverse más fácilmente.


Me encontré con este problema un par de veces y finalmente descubrí por qué estaba teniendo el problema. Voy a agregar los hallazgos aquí también. Estoy en Linux VM, la respuesta corta es que estaba teniendo este problema ya que mi VM obtuvo una nueva IP. Si miras debajo de los archivos de configuración y abres server.properties, verás esta línea

public.host.name = xx.xx.xx.xxx o localhost.

Asegúrese de que esta IP coincida con su IP actual, puede verificar su IP here .

Una vez que lo solucioné, todo comenzó a funcionar correctamente. Estoy usando la versión 0.9.0.0.

Espero que esto ayude a alguien.


Me enfrenté exactamente al mismo problema cuando estaba tratando de jugar con Kafka en mi sistema local (Mac OS X El Capitán). El problema fue con mi cuidador del zoológico, no se refería al archivo de configuración correcto. Reinicia el zookeeper, y luego Kafka y ejecuta el siguiente comando. verifica si Líder no es Ninguno. Si Leader no es ninguno, elimine ese tema y vuelva a crearlo.

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

La salida será como

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

Espero que esto ayude


Tuve el mismo problema, resolví el JDK de 1.7 a 1.6


Tuve el mismo problema. Resulta que Kafka requiere que el nombre de host de la máquina sea resuelto a conectarse de nuevo.

Actualicé el nombre de host en mi máquina y, después de reiniciar el zookeeper y kafka, el tema pudo escribirse correctamente.


Yo tuve el mismo problema. Al final tuve que eliminar detener los nodos de Kafka, luego seguir los consejos aquí sobre cómo eliminar temas de Kafka . Una vez que me deshice de los temas rotos, pude volver a iniciar Kafka con éxito.

Me gustaría saber si hay un mejor enfoque y cómo evitar que esto suceda en el futuro.


tuvo el mismo problema asegúrese de tener al menos un tema en cada partición que su consumidor / productor esté usando. Zookeeper no encontrará un líder de una partición si no hay temas usando esa partición