KafkaException:Fetching topic metadata with correlation id 0 for topics [Set(test)]

本地鏈接遠程Kafka異常

遠程機器fp-bd13搭建最新版Kafka (自帶zookeeper),按照文檔默認配置啓動。遠程新建producer和costumer一切正常。
本地spark鏈接:

JavaPairReceiverInputDStream<String, String> kafkaStream =KafkaUtils
                                    .createStream(jssc,"fp-bd13:2181", "0", topicMap);

測試出現:

[ ERROR ]  fetching topic metadata for topics [Set(test)] from broker 
[ArrayBuffer(id:0,host:localhost,port:9092)] failed 
kafka.common.KafkaException: 
Fetching topic metadata with correlation id 0 for topics [Set(test)] 
from broker [BrokerEndPoint(0,localhost,9092)] failed 
(kafka.client.ClientUtils$) 

看到這個日誌覺得有點奇怪,爲什麼會有localhost,我們配置的明明是fp-bd13的zookeeper,但是9092的端口是kafka所監聽的。從而想到可能是鏈接kafka的配置存在問題。 kafka_2.11-1.1.0/config/server.propertieslisteners 屬性默認是 localhost:9092 ,由於遠程鏈接localhost並不是本機,所以這裏需要制定下我們IP和端口:listeners=PLAINTEXT://fp-bd13:9092 。然後重啓 kafka 再運用spark應用就能成功鏈接了。

成功後我們在遠程創建一個生產者,用來傳遞消息給spark應用:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

執行命令後卻不停的警告:

[2018-04-17 10:08:48,158] WARN [Producer clientId=console-producer] Connection to node -1 could not be established. 
Broker may not be available. (org.apache.kafka.clients.NetworkClient)

意思是沒有客戶端鏈接這個生產者,發消息本地應用也收不到。之前遠程測試又是沒問題的,從而想到又是網絡問題。這裏我們要修改--broker-listfp-bd13:9092。然後就沒有警告了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章