Kafka到zookeeper命令会产生错误

时间:2016-02-01 08:03:38

标签: apache-kafka apache-zookeeper

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)

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

在我的情况下,问题是我指定了一个不存在的kafka chroot。

我发现我们公司的ops团队已将kafka chroot配置为purple-elephants,并配置了在kafka服务重启时确保创建此chroot。

首先我发布了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

答案 1 :(得分:1)

尝试删除/ 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)

答案 2 :(得分:1)

简而言之,这意味着kafka-topics.sh脚本无法找到在ZooKeeper中注册的任何活动Kafka代理。这可能有以下几个原因:

  1. 您的Kafka经纪人没有投放。

  2. 您的Kafka代理已启动,但他们已连接到与您在kafka-topics.sh命令中引用的实例不同的ZooKeeper实例。

  3. 您的Kafka代理已启动,并且正在连接到正确的ZooKeeper实例,但它们已在与您的命令中的chroot不同的chroot下注册。在您的--zookeeper localhost:2181/kafka示例中,chroot是/kafka位。您可以在$KAFKA_HOME/config/server.properties属性下的zookeeper.connect文件中找到Kafka代理使用的chroot。

答案 3 :(得分:0)

在创建主题时,应该是带有--zookeeper选项的zookeeper url。 如果zookeeper&卡夫卡正在工作。

--zookeeper localhost:2181

This link describes how to create a topic. 您还可以在zookeeper cli中查看可用ID的数量。 ./zkCli.sh&然后ls /brokers/ids。至少应显示一个经纪人ID。

答案 4 :(得分:0)

在我的情况下,我只启动了zookeeper并忘了启动kafka服务器。我也启动了kafka服务器,然后创建了主题。命令工作正常。