CDH中安裝kafka,創建Topic報錯Replication factor: 1 larger than available brokers: 0.系列問題解決【詳細步驟】

接下去需要通過kafka傳送數據,剛剛同事在cdh中新建的kafka,我想在裏面創建topic。直接上手:

kafka-topics --zookeeper localhost:2181 --create -replication-factor 1 --partitions 3 --topic test

CDH中使用kafka指令跟kafka文檔中說明的指令不一樣,具體可以看這篇博文。    ——>   CDH 中 kafka 的使用注意

一、遇到第一個問題

結果報錯了,具體錯誤信息如下:

Error while executing topic command : Replication factor: 1 larger than available brokers: 0.
[2019-11-27 20:48:18,659] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0.
 (kafka.admin.TopicCommand$)

二、問題解決

問了度娘,有人遇到這個問題,需要看 CDH 中 kafka broker 的屬性:zookeeper.chroot 這個屬性與 kafka 創建 topic 後,信息存放的路徑有關。然後我看了看同事配置的CDH中的 zookeeper.chroot 屬性,原來是/kafka。如下圖:

如果這裏設置 zookeeper.chroot 爲 /kafka。那麼對應的,我們需要在/kafka 路徑下創建topic。所以創建topic指令如下:

kafka-topics --zookeeper localhost:2181/kafka --create -replication-factor 1 --partitions 3 --topic test

我們只需在localhost:2181後加 /kafka 即可。

三、遇到的第二個問題

然後再次運行,執行後創建時topic是創建成功了,但是又報了一個異常:

[2019-11-27 20:52:44,290] WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
Created topic test.

四、問題解決

這裏我想了想還是查看一下 server.properties 配置文件。

這個配置文件在安裝的 /opt/cloudera/parcels/KAFKA-4.1.0-1.4.1.0.p0.4/etc/kafka/conf.dist 目錄下,具體看自己CDH安裝kafka的路徑。我的路徑如下 :

打開看到我們的具體配置信息:

excuse me?  這裏的 zookeeper.connect 竟然是 localhost:2181,難怪會出警告了。

修改成 zookeeper.connect=localhost:2181/kafka 保存。

然後我們再重新創建一個新的主題test1:

直接創建成功,不報錯無異常。

 

 

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