簡體   English   中英

Kafka:在多服務器設置上創建主題時,org.apache.zookeeper.KeeperException $ NoNodeException

[英]Kafka: org.apache.zookeeper.KeeperException$NoNodeException while creating topic on multi server setup

我正在嘗試在所有不同的計算機上設置1個生產者,1個消費者和3個代理的多節點Kafka-0.8.2.2集群。

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 Server。 對嗎? )。

我的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

以下是我用作參考的許多文章:

乍一看,您似乎是在向本地動物園管理員打電話來創建主題,而該動物園管理員並不知道您的任何卡夫卡·布魯克斯。 您應該致電./bin/kafka-topics.sh --create --zookeeper <IP.OF.BROKER.1>:2181

問題是因為我試圖連接到本地主機的zookeeper 我的理解是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服務的端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM