1

我已經開始學習Kafka了。嘗試對其進行基本操作。我對「經紀人」這個問題感到厭煩。NoBrokersAvailable:NoBrokersAvailable-Kafka錯誤

我的卡夫卡正在運行,但當我想創建一個分區。

from kafka import TopicPartition 
(ERROR THERE) consumer = KafkaConsumer(bootstrap_servers='localhost:1234') 
consumer.assign([TopicPartition('foobar', 2)]) 
msg = next(consumer) 

回溯(最近通話最後一個): 文件 「」,1號線,在 文件「/usr/local/lib/python2.7/dist-packages/kafka/consumer/group。 py「,第284行,在init self._client = KafkaClient(metrics = self._metrics,** self.config) 文件」/usr/local/lib/python2.7/dist-packages/kafka/client_async .py「,第202行,在init self.config ['api_version'] = self.check_version(timeout = check_timeout) 文件」/usr/local/lib/python2.7/dist-packages/卡夫卡/ client_async.py」,線路791,在check_version 提高Errors.NoBrokersAvailable() kafka.errors.NoBrokersAvailable:NoBrokersAvailable

+0

創建Kafka數據管道的步驟。按照下面的鏈接。 https://stackoverflow.com/questions/35689238/kafka-python-producer-is-not-able-to-connect/49212019#49212019 – user2468325

回答

1

看起來要啓動消費消息,而不是創建partions。儘管如此 - 你可以在1234港口抵達卡夫卡嗎? 9092是kafkas的默認端口,也許你可以試試這個。如果你找到了正確的端口,但您的應用程序仍然會產生錯誤,你可以嘗試使用一個控制檯消費者測試您的設置:

bin/kafka-console-producer.sh --broker-list localhost:<yourportnumber> --topic foobar

控制檯消費者是標準的卡夫卡發佈的一部分。也許這會讓你更接近問題的根源。

1

您不能在消費者內創建分區。分區是在創建主題時創建的。例如,使用命令行工具:

bin/kafka-topics.sh \ 
    --zookeeper localhost:2181 \ 
    --create --topic myNewTopic \ 
    --partitions 10 \ 
    --replication-factor 3 

這與10個分區(編號從0到9)創建一個新的話題「myNewTopic」和複製因子3(見http://docs.confluent.io/3.0.0/kafka/post-deployment.html#admin-operationshttps://kafka.apache.org/documentation.html#quickstart_createtopic

在你的消費者,如果你打電話給assign(),這意味着你想消費相應的分區,並且這個分區必須已經存在。

0

不知道這個答案仍然是相關的,但最近解決了一個垂直框VM經紀人從主機Windows操作系統無法訪問此相同的問題。 在KafkaConsumer既然你已經提到bootsrap_servers,我假設你正在使用至少卡夫卡0.10.0.0

請查找在server.properties文件中advertised.listeners屬性,並將其設置爲PLAINTEXT://localhost:9092PLAINTEXT://<broker_ip>:9092

但是你之前設置確保您的經紀人可以從您的消費者正在運行的環境中獲得(通過執行ping localhost)。

此外,您還需要重新啓動卡夫卡服務器和消費者/生產者(無論是運行),並嘗試發送/接收。

例如,如果您運行的虛擬機,你可能想只使用主機適配器,使券商從主機可達

注:此配置適用於卡夫卡服務器> = 0.10.XX但不0.8.2.X.未檢查0.9.0.X