Kafka參數zookeeper和bootstrap-server的區別


1.區別

zookeeper - 舊版Kafka的參數

bootstrap.server - 新版Kafka的參數

 

2.原因

Kafka開發團隊重寫了ZooKeeper的Quorum控制器代碼並嵌入到Kafka中。所以從v2.8版本開始,Kafka不再依賴ZooKeeper

資料:https://weibo.com/ttarticle/p/show?id=2309404634263655153710

 

3.特性

bootstrap.servers參數,只在啟動客戶端連接Kafka服務時使用。並且,即使列表里面填了多個節點,只要有一個可用就行了。

 

4.實例

假定有3台機,主機名是node1、node2、node3,以創建一個topic為例:

舊版(< v2.2)

kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --create --topic ..

 

新版(>= v2.2)

kafka-topics.sh --bootstrap-server node1:9092 --create --topic ..

 

其中,2181是ZooKeeper的監聽端口,9092是Kafka的監聽端口。

舊版用--zookeeper參數,主機名(或IP)和端口用ZooKeeper的,也就是server.properties文件中zookeeper.connect屬性的配置值

新舊用--bootstrap-server參數,主機名(或IP)和端口用某個節點的即可,即主機名(或主機IP):9092。

 

5.錯誤及解決方法

* 如果沒有使用對應版本的命令,會報以下2種錯誤:

(1) 找不到zookeeper參數

zookeeper is not a recognized option

新版已不支持zookeeper參數,需要換成bootstrap-server參數

 

(2) 節點響應超時(請求超時)

Error while executing topic command : Timed out waiting for a node assignment. Call: xxx
ERROR org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment. Call: xxx

該錯誤是由於沒有用對應版本的命令,訪問了錯的主機名(或IP)和端口,所以請求失敗導致超時。

* 其中的xxx是指具體的動作,例如createTopics、listTopics等。

另外,如果沒配置server.properties文件的listeners值,也會報以上錯誤。

listeners值默認是PLAINTEXT://:9092,要改為PLAINTEXT://localhost:9092或PLAINTEXT://node1:9092等

 

附:參考資料

https://blog.csdn.net/zollty/article/details/108975026

https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum

https://www.aboutyun.com/thread-27567-1-1.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM