it-swarm.dev

Esecuzione in LeaderNotAvailableException quando si utilizza Kafka 0.8.1 con Zookeeper 3.4.6

Ho installato la versione stabile di kafka (0.8.1 con 2.9.2 Scala) come da loro sito web e la sto eseguendo con un insieme di zookeeper a 3 nodi (3.4.6). Ho provato a creare un argomento di test, ma continuo a vedere che non c'è un leader assegnato alla partizione dell'argomento:

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

Ho provato comunque a scrivere sull'argomento usando il produttore della console ma ho incontrato l'eccezione 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)

Dovrei anche dire che questo funzionava inizialmente per alcuni giorni e poi improvvisamente qualsiasi argomento che è stato creato aveva questo problema di leader mancante.

66
user3561789

Kafka utilizza un framework di coordinamento esterno (di default Zookeeper) per mantenere la configurazione. Sembra che la configurazione non sia sincronizzata con i dati di log di Kafka. In questo caso, rimuoverei i dati sugli argomenti interessati e i relativi dati sullo Zookeeper. 

Per ambiente di test:

  1. Ferma Kafka-server e Zookeeper-server
  2. Rimuovere le directory dati di entrambi i servizi, per impostazione predefinita sono /tmp/kafka-log e /tmp/zookeeper.
  3. Avvia Kafka-server e Zookeeper-server di nuovo
  4. Crea un nuovo argomento

Ora sei in grado di lavorare di nuovo con l'argomento.

Per ambiente di produzione:

Poiché gli argomenti di Kafka sono memorizzati in diverse directory, è necessario rimuovere determinate directory. Dovresti anche rimuovere /brokers/{broker_id}/topics/{broken_topic} da Zookeeper usando un client Zookeeper. 

Si prega di leggere attentamente la documentazione di Kafka per accertarsi della struttura di configurazione, prima di fare qualcosa di stupido. Kafka sta lanciando una funzione di eliminazione ( KAFKA-330 ), in modo che il problema possa essere risolto più facilmente.

48
stanleyxu2005

Ho avuto lo stesso problema. Si scopre che Kafka richiede che l'hostname della macchina sia risolvibile per connettersi a se stesso.

Ho aggiornato il nome host sulla mia macchina e, dopo un riavvio di zookeeper e kafka, l'argomento potrebbe essere scritto correttamente.

19
Lee Netherton

Ho risolto questo problema aggiungendo una voce in /etc/hosts per 127.0.0.1 con nome host completo:

127.0.0.1       x4239433.your.domain.com x4239433

Il produttore e il consumatore hanno iniziato a lavorare bene.

10
borodark

Ho avuto lo stesso problema. Alla fine ho dovuto eliminare fermare i nodi Kafka, quindi seguire il consiglio qui su come eliminare gli argomenti di Kafka . Una volta che mi sono sbarazzato degli argomenti non funzionanti, sono stato in grado di avviare nuovamente Kafka con successo. 

Vorrei sapere se esiste un approccio migliore e come evitare che ciò accada in futuro. 

7
Mark Butler

Ho avuto lo stesso problema, ho risolto il JDK dalla 1.7 alla 1.6

2
user3603968

Quindi un'altra possibile risposta: l'indirizzo IP nel advertised.hostname nel kafka config/server.properties potrebbe essere scritto in modo errato con uno spazio extra.

Nei miei casi

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

invece del corretto

advertised.Host.name=10.123.123.211\n

Per qualche motivo questo ha funzionato per 6 mesi senza problemi, e presumibilmente un aggiornamento di alcune librerie ha rimosso la rilassata ricerca dell'indirizzo IP eliminando lo spazio extra.

Una semplice correzione del file di configurazione e il riavvio di kafka risolve questo problema.

2
Soren

È il problema con JDK.

Ho installato 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)

Ma l'ho cambiato in Oracle jdk (segui questo link: 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)

Ora funziona bene. Spero che questo ti aiuti.

2
Ashwini Adlakha

ha avuto lo stesso problema assicurati di avere almeno un argomento su ogni partizione utilizzata dal tuo consumatore/produttore. Zookeeper non troverà un leader di una partizione se non ci sono argomenti che usano quella partizione

2
Andrew

Ho affrontato esattamente lo stesso problema quando stavo cercando di giocare con Kafka nel mio sistema locale (Mac OS X El Capitan). Il problema era con il mio zookeeper, non si riferiva a correggere il file di configurazione . Riavvia lo zookeeper, quindi Kafka ed esegui il seguente comando. controlla se Leader non è Nessuno. Se Leader non è presente, elimina l'argomento e ricrearlo.

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

L'output sarà simile

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

Spero che questo dovrebbe aiutare.

0
suyash

Ho affrontato il problema con Kafka, Zookeeper pod in Openshift e Kafka era abilitato per TLS. Ho dovuto aggiungere le seguenti variabili d'ambiente 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

E dopo aver impostato le variabili, ho dovuto eliminare e ricreare i pod, per farlo funzionare.

0

Aggiungi "advertised.Host.name = localhost" in config/server.properties e riavvia il server Kafka. Ha funzionato per me

0
Reddeiah Pidugu