Apache kafka Kafka to zookeeper命令产生错误

Apache kafka Kafka to zookeeper命令产生错误,apache-kafka,apache-zookeeper,Apache Kafka,Apache Zookeeper,来自kafka的上述命令会产生一个错误 bin/kafka-topics.sh --create --topic activityTopic --zookeeper localhost:2181/kafka --partitions 1 --replication-factor 1 有什么想法吗?在创建主题时,它应该是zookeeper url,带有--zookeeper选项。 如果zookeeper和kafka正在工作,它应该按照下面的方式工作 Error while executing t

来自kafka的上述命令会产生一个错误

bin/kafka-topics.sh --create --topic activityTopic --zookeeper localhost:2181/kafka --partitions 1 --replication-factor 1

有什么想法吗?

在创建主题时,它应该是zookeeper url,带有--zookeeper选项。 如果zookeeper和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 cli中检查可用ID的数量
/zkCli.sh
&然后
ls/brokers/ids
。至少应显示一个代理id

在我的例子中,问题是我指定了一个不存在的卡夫卡chroot。

我发现我们公司的ops团队已将kafka chroot配置为
紫色大象
,并将此chroot的创建配置为确保kafka服务重启

首先,我发布了一个
sudo服务kafka restart
,日志显示创建了chroot:

--zookeeper localhost:2181
然后我简单地说:

Ensuring chroot '/purple-elephants' exists
Starting Kafka server.                            

按命令所示尝试删除/kafka

bin/kafka-topics.sh --create --topic activityTopic --zookeeper localhost:2181/purple-elephants --partitions 1 --replication-factor 1
如果仍然发生,请确定zookeeper.properties中的路径

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic Falcon
dataDir(default is /tmp/zookeeper)
和server.properties中的路径

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic Falcon
dataDir(default is /tmp/zookeeper)

在我的例子中,我只启动了zookeeper,而忘记了启动kafka服务器。我也启动了卡夫卡服务器,然后创建了主题。该命令运行良好。

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

  • 您的卡夫卡代理未运行

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

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


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