bin/kafka-topics.sh --create --topic activityTopic --zookeeper localhost:2181/kafka --partitions 1 --replication-factor 1
上記のkafkaからのコマンドはエラーを生成します
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)
何か案が?
私の場合、問題は存在しないkafka chroot。を指定していたことでした。
私たちの会社の運用チームがkafka chrootをpurple-elephants
、このchrootの作成がkafkaサービスの再起動時に確実に行われるように構成しました。
最初に私はSudo service kafka restart
とログは、chrootが作成されたことを示しています。
Ensuring chroot '/purple-elephants' exists
Starting Kafka server.
それから私は単に発行しました:
bin/kafka-topics.sh --create --topic activityTopic --zookeeper localhost:2181/purple-elephants --partitions 1 --replication-factor 1
簡単に言えば、これはkafka-topics.sh
スクリプトがZooKeeperに登録されているアクティブなKafkaブローカーを見つけられないことを意味します。これにはいくつかの理由が考えられます。
あなたのKafkaブローカーは実行されていません。
あなたのKafkaブローカーは稼働していますが、それらはkafka-topics.sh
コマンドで参照したものとは異なるZooKeeperインスタンスに接続されています。
あなたのKafkaブローカーは稼働しており、正しいZooKeeperインスタンスに接続していますが、コマンド内のものとは異なるchrootの下に登録されています。--zookeeper localhost:2181/kafka
の例では、chroot /kafka
ビットです。$KAFKA_HOME/config/server.properties
ファイルのzookeeper.connect
プロパティで、Kafkaブローカーが使用しているchrootを確認できます。
コマンドが/ kafkaを削除してみてください
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic Falcon
それでも発生する場合は、zookeeper.propertiesのパスを確認してください。
dataDir(default is /tmp/zookeeper)
およびserver.propertiesのパス
log.dirs(default is /tmp/kafka-logs)
トピックの作成中は、-zookeeperオプションを指定したzookeeper urlである必要があります。 zookeeper&kafkaが機能している場合は、次の行が機能するはずです。
--zookeeper localhost:2181
このリンクはトピックの作成方法を説明しています。 Zookeeper CLIで利用可能なIDの数を確認することもできます。 ./zkCli.sh
&次にls /brokers/ids
。少なくとも1つのブローカーIDが表示されます。
私の場合、私はzookeeperのみを起動し、起動を忘れていましたkafkaサーバー。kafkaサーバーも起動し、トピックを作成しました。コマンドは正常に機能しました。