Hier, j’ai réussi à installer Zookeeper et un courtier kafka. Tout a fonctionné comme prévu. Je ferme kafka (ctrl + c) puis zookeeper.
Aujourd'hui, j'ai commencé zookeeper et quand j'ai commencé kafka (bin/kafka-server-start.sh config/server0.properties
), j'obtiens le message d'erreur suivant. J'ai essayé différents remèdes suggérés (retirer complètement mon installation de kafka et recommencer à zéro). J'ai toujours la même erreur.
[2016-09-28 16:15:55,895] FATAL Fatal error during KafkaServerStartable startup. Prepare to shutdown (kafka.server.KafkaServerStartable)
Java.lang.RuntimeException: A broker is already registered on the path /brokers/ids/0. This probably indicates that you either have configured a brokerid that is already in use, or else you have shutdown this broker and restarted it faster than the zookeeper timeout so it appears to be re-registering.
at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:305)
at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:291)
at kafka.server.KafkaHealthcheck.register(KafkaHealthcheck.scala:70)
at kafka.server.KafkaHealthcheck.startup(KafkaHealthcheck.scala:51)
at kafka.server.KafkaServer.startup(KafkaServer.scala:244)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:37)
at kafka.Kafka$.main(Kafka.scala:67)
at kafka.Kafka.main(Kafka.scala)
[2016-09-28 16:15:55,896] INFO [Kafka Server 0], shutting down (kafka.server.KafkaServer)
Tous mis en place dans mac
J'ai rencontré le même problème lors de la configuration des grappes multinodes kafka et zookeeper. La cause du problème est la suivante: En tant qu'ensemble de zookeepers, l'installation prend un certain temps. ensemble encore… .. Ainsi, un nœud kafka peut être connecté à un gardien de zoo qui ne fait pas encore partie de l'ensemble . Une autre raison peut être que le courtier kafka est tué au lieu d'être arrêté .. lorsque vous tuez votre processus kafka se bloque et il ne ferme pas sa connexion de gardien de zoo correctement
Pour éviter cette situation, assurez-vous que votre ensemble de gardiens de zoo est opérationnel avant de faire appel à des courtiers kafka. Ajoutez des temps d’attente corrects entre le démarrage et l’arrêt des services de courtier Kooka et de Zookeeper.
J'ai trouvé un problème similaire sur mon serveur AWS. Le problème était zookeeper était en cours d'exécution. J'ai donc tué le processus en premier et essayé à nouveau et cela a fonctionné.
$ ps aux | grep zookeeper
$kill -9 <zookeeper.properties process>
Je suis tombé sur le même problème et il y a 2 façons de s'y prendre
Assurez-vous que le serveur kafka est correctement arrêté en vérifiant que le prot 9092
par défaut est déjà utilisé ou non. Tuez le processus sur 9092
et redémarrez le serveur kafka.
Si cela ne fonctionne pas, le serveur kafka existant (avec l'ID de courtier 0) est peut-être déjà utilisé . Essayez de remplacer broker.id
par 1 au lieu de 0 dans "server0.properties" (au fait, pourquoi il s'appelait server0 , avez-vous changé la configuration ici? par défaut, ce devrait être server.properties),
J'avais un problème similaire avec docker conteneur contenant zookeeper et kafka (ce n'est pas la meilleure pratique de mettre deux services dans un conteneur, mais c'était à des fins de test).
c'était l'erreur
[2018-11-21 12:54:24,434] INFO [ThrottledChannelReaper-Fetch]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2018-11-21 12:54:24,434] INFO [ThrottledChannelReaper-Produce]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2018-11-21 12:54:24,435] INFO [ThrottledChannelReaper-Request]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2018-11-21 12:54:24,453] INFO Loading logs. (kafka.log.LogManager)
[2018-11-21 12:54:24,457] INFO Logs loading complete in 4 ms. (kafka.log.LogManager)
[2018-11-21 12:54:24,468] INFO Starting log cleanup with a period of 300000 ms. (kafka.log.LogManager)
[2018-11-21 12:54:24,469] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
[2018-11-21 12:54:24,694] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2018-11-21 12:54:24,728] INFO [SocketServer brokerId=0] Started 1 acceptor threads (kafka.network.SocketServer)
[2018-11-21 12:54:24,741] INFO [ExpirationReaper-0-Produce]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2018-11-21 12:54:24,741] INFO [ExpirationReaper-0-DeleteRecords]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2018-11-21 12:54:24,741] INFO [ExpirationReaper-0-Fetch]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2018-11-21 12:54:24,750] INFO [LogDirFailureHandler]: Starting (kafka.server.ReplicaManager$LogDirFailureHandler)
[2018-11-21 12:54:24,790] INFO Creating /brokers/ids/0 (is it secure? false) (kafka.zk.KafkaZkClient)
[2018-11-21 12:54:24,802] ERROR Error while creating ephemeral at /brokers/ids/0, node already exists and owner '72057672936325120' does not match current session '72057674644258816' (kafka.zk.KafkaZkClient$CheckedEphemeral)
[2018-11-21 12:54:24,803] INFO Result of znode creation at /brokers/ids/0 is: NODEEXISTS (kafka.zk.KafkaZkClient)
[2018-11-21 12:54:24,808] ERROR [KafkaServer id=0] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
org.Apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode = NodeExists
at org.Apache.zookeeper.KeeperException.create(KeeperException.Java:122)
at kafka.zk.KafkaZkClient.checkedEphemeralCreate(KafkaZkClient.scala:1525)
at kafka.zk.KafkaZkClient.registerBrokerInZk(KafkaZkClient.scala:84)
at kafka.server.KafkaServer.startup(KafkaServer.scala:257)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
at kafka.Kafka$.main(Kafka.scala:75)
at kafka.Kafka.main(Kafka.scala)
Quickfix pour moi a été de démarrer kafka-server quelques secondes plus tard;
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties && (bin/kafka-server-start.sh config/server.properties || echo "kafka start failed. restarting ... " && sleep 3 && bin/kafka-server-start.sh config/server.properties)
L'approche ci-dessous a fonctionné pour moi.
Remplacez l'ID de courtier par une valeur différente. Par défaut, il s'agit de 0
. Changez-le en 1
et testez à nouveau les choses.