【问题标题】:Kafka to zookeeper command produces errorKafka 到 zookeeper 命令产生错误
【发布时间】:2016-05-09 14:41:01
【问题描述】:
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)

有什么想法吗?

【问题讨论】:

  • 也许 Zookeeper 没有启动?
  • 我不熟悉kafka如何使用zk,但这看起来kafka系统不是用相同的zk连接信息启动的。
  • 尝试删除/kafka

标签: apache-kafka apache-zookeeper


【解决方案1】:

创建主题时,它应该是带有--zookeeper 选项的zookeeper url。 如果 zookeeper 和 kafka 正常工作,它应该可以工作。

--zookeeper localhost:2181

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

【讨论】:

    【解决方案2】:

    就我而言,问题在于 我指定了一个不存在的 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
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        就我而言,我只启动了 zookeeper 并忘记了启动 kafka 服务器。我也启动了 kafka 服务器,然后创建了主题。该命令运行良好。

        【讨论】:

          【解决方案5】:

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

          1. 您的 Kafka 代理未运行。

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

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

          【讨论】:

            猜你喜欢
            • 2020-01-10
            • 2021-05-03
            • 1970-01-01
            • 2020-01-30
            • 1970-01-01
            • 2013-02-19
            • 2016-03-27
            • 1970-01-01
            • 2022-06-10
            相关资源
            最近更新 更多