1

我正在尝试Kafka-0.8.2.2在不同的机器上设置具有 1 个生产者、1 个消费者和 3 个代理的多节点集群。

在创建主题时producer,我收到错误消息org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /brokers/ids。完整的控制台输出可在此处获得。Kafka Producer的日志中没有错误。

我用来运行的命令Kafka是:

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

注意:Zookeeper 服务在所有服务器上运行,并且所有三个代理都在运行 Kafka 服务器(只有代理需要 Kafka 服务器。对吗?)。

我的producer.properties的配置如下:

metadata.broker.list=<IP.OF.BROKER.1>:9092,<IP.OF.BROKER.2>:9092,<IP.OF.BROKER.3>:9092

producer.type=sync

compression.codec=none

serializer.class=kafka.serializer.DefaultEncoder

以下是我用作参考的许多文章中的一些:

4

2 回答 2

1

乍一看,您似乎正在向本地动物园管理员调用创建主题,而该管理员不知道您的任何卡夫卡经纪人。你应该打电话 ./bin/kafka-topics.sh --create --zookeeper <IP.OF.BROKER.1>:2181

于 2016-03-02T11:30:26.700 回答
0

问题是因为我试图连接到zookeeperlocalhost。我的理解是 Zookeeper 需要在生产者、消费者和 Kafka 代理上运行,并且生产者 -> 代理和代理 -> 消费者之间通过 Zookeeper 进行通信。但这是不正确的。实际上:

ZookeeperKafka服务器应该只在代理服务器上运行。在创建主题或将内容发布到主题时,应使用--zookeeper选项传递任何 Kafka 代理的公共 DNS。无需在生产者或消费者实例上运行 Kafka 服务器。

正确的命令将是:

./bin/kafka-topics.sh --create --zookeeper <Public-DNS>:<PORT> --replication-factor 1 --partitions 3 --topic edwintest

其中:Public-DNS是任何 Kafka 代理的 DNS,PORT是 zookeeper 服务的端口。

于 2016-03-06T20:58:24.413 回答