bin/kafka-topics.sh --create --topic activityTopic --zookeeper localhost:2181/kafka --partitions 1 --replication-factor 1
La commande ci-dessus de kafka produit une erreur
Error while executing topic command org.Apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/ids
org.I0Itec.zkclient.exception.ZkNoNodeException: org.Apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/ids
at org.I0Itec.zkclient.exception.ZkException.create(ZkException.Java:47)
at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.Java:685)
at org.I0Itec.zkclient.ZkClient.getChildren(ZkClient.Java:413)
at org.I0Itec.zkclient.ZkClient.getChildren(ZkClient.Java:409)
at kafka.utils.ZkUtils$.getChildren(ZkUtils.scala:462)
at kafka.utils.ZkUtils$.getSortedBrokerList(ZkUtils.scala:78)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:170)
at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:93)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:55)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
Caused by: org.Apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/ids
at org.Apache.zookeeper.KeeperException.create(KeeperException.Java:111)
at org.Apache.zookeeper.KeeperException.create(KeeperException.Java:51)
at org.Apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.Java:1472)
at org.Apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.Java:1500)
at org.I0Itec.zkclient.ZkConnection.getChildren(ZkConnection.Java:99)
at org.I0Itec.zkclient.ZkClient$2.call(ZkClient.Java:416)
at org.I0Itec.zkclient.ZkClient$2.call(ZkClient.Java:413)
at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.Java:675)
Une idée?
Dans mon cas, le problème était que je spécifiais un chroot inexistant kafka.
J'ai découvert que notre équipe des opérations de l'entreprise avait configuré le kafka chroot comme purple-elephants
, et configuré la création de ce chroot à assurer au kafka redémarrage du service.
J'ai d'abord publié un Sudo service kafka restart
et le journal montre que le chroot a été créé:
Ensuring chroot '/purple-elephants' exists
Starting Kafka server.
Ensuite, j'ai simplement émis:
bin/kafka-topics.sh --create --topic activityTopic --zookeeper localhost:2181/purple-elephants --partitions 1 --replication-factor 1
En résumé, cela signifie que le kafka-topics.sh
le script ne trouve aucun courtier Kafka inscrit auprès de ZooKeeper. Cela peut être dû à plusieurs raisons:
Vos courtiers Kafka) ne fonctionnent pas.
Votre Kafka courtier (s) sont en place, mais ils sont connectés à une instance ZooKeeper différente de celle à laquelle vous avez fait référence dans votre kafka-topics.sh
commande.
Votre Kafka courtier (s) sont en place et se connectent à l'instance ZooKeeper correcte, mais ils sont enregistrés sous un chroot différent de celui de votre commande. Dans votre exemple de --zookeeper localhost:2181/kafka
, le chroot est le /kafka
bit. Vous pouvez trouver le chroot utilisé par vos courtiers Kafka dans le $KAFKA_HOME/config/server.properties
fichier, sous le zookeeper.connect
propriété.
Essayez de supprimer/kafka car la commande est
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic Falcon
Si cela se produit toujours, assurez-vous du chemin dans zookeeper.properties de
dataDir(default is /tmp/zookeeper)
et chemin dans server.properties de
log.dirs(default is /tmp/kafka-logs)
lors de la création du sujet, il doit s'agir d'une URL zookeeper avec l'option --zookeeper. Cela devrait fonctionner la ligne suivante si zookeeper & kafka fonctionnent.
--zookeeper localhost:2181
Ce lien décrit comment créer un sujet. Vous pouvez également vérifier le nombre d'ID disponibles dans zookeeper cli. ./zkCli.sh
& puis ls /brokers/ids
. Au bail, un identifiant de courtier doit être affiché.
Dans mon cas, je n'ai démarré que zookeeper et j'ai oublié de démarrer le serveur kafka. J'ai également démarré le serveur kafka) puis créé le sujet. La commande a bien fonctionné. .