1

Kafka-0.8.2.21 つのプロデューサー、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 サービスはすべてのサーバーで実行されており、3 つのブローカーすべてで 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

一見すると、あなたの kafka-brooker を認識していないローカルの飼育係に create topic を呼び出しているように見えます。あなたは電話するべきです ./bin/kafka-topics.sh --create --zookeeper <IP.OF.BROKER.1>:2181

于 2016-03-02T11:30:26.700 に答える
0

zookeeper問題は、localhostに接続しようとしていたためです。私の理解では、zookeeper はプロデューサー、コンシューマー、および Kafka ブローカーで実行する必要があり、通信はプロデューサー -> ブローカーとブローカー -> コンシューマーの間で Zookeeper を介して行われます。しかし、それは間違っていました。実際:

ZookeeperおよびKafkaサーバーは、ブローカー サーバーでのみ実行する必要があります。トピックを作成するか、コンテンツをトピックに公開する際に、Kafka ブローカーのパブリック DNS を--zookeeperオプションで渡す必要があります。プロデューサーまたはコンシューマー インスタンスで 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 に答える