kafka擴容和分區重新分配


 

擴容:增加機器,例如原來三台服務器的kafka集群增加兩台機器成為有五台機器的kafka集群,跟搭建差不多

分區重新分配:在原來機器上的主題分區不會自動均衡到新的機器,需要使用分區重新分配工具來均衡均衡


重新分配官方文檔地址:點擊打開鏈接

翻譯官方文檔中文地址:點擊打開鏈接

上面兩個鏈接中的文檔描述的很詳細。這里記錄一下關鍵步驟,更主要是總結實際操作過來之后的問題和新的知識理解

主要步驟

1、確定要重啟分配分區的主題,新建topics-to-move.json json文件

 

{
"topics": [
{"topic": "foo1"},
{"topic": "foo2"}
],
"version":1
}
// foo1 foo2 為要重新分配的主題
2、使用 bin/kafka-reassign-partitions.sh重新分配工具生成分配規則的json語句分配到 5,6機器
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topics-to-move-json-file topics-to-move.json --broker-list "5,6" –generate
3、有分配規則的json語句輸出到控制台,復制到新建的json文件expand-cluster-reassignment.json中,例如:
{"version":1,
"partitions":[{"topic":"foo1","partition":0,"replicas":[5,6]},
{"topic":"foo1","partition":1,"replicas":[5,6]},
{"topic":"foo1","partition":2,"replicas":[5,6]},
{"topic":"foo2","partition":0,"replicas":[5,6]},
{"topic":"foo2","partition":1,"replicas":[5,6]},
{"topic":"foo2","partition":2,"replicas":[5,6]}]
}

//描述分配之后分區的分布情況
4、執行命令,開始分區重新分配
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json –execute
5、驗證是否完成
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json –verify
//當輸出全部都是completed successfully表明移動已經完成.


操作中三個小技巧:
1、可以不需要第一步和第二步,自己手動新建分配的json文件。

2、主題量很多的是就不要一個一個復制粘貼了,用excel的拼接函數,還是很方便

3、最后一步驗證中,主題很多的時候,會有很多在為未完成的輸出語句夾雜其中。在語句后面加上 | grep -c "progress"就知 道有多少分區還沒完成,輸出為0的時候就是完成了。


總結和知識點理解

1、kafka新建主題時的分區分配策略:隨機選取第一個分區節點,然后往后依次增加。例如第一個分區選取為1,第二個分區就 是2,第三個分區就是3. 1,2,3是brokerid。不會負載均衡,所以要手動重新分配分區操作,盡量均衡。

2、在生產的同時進行數據遷移會出現重復數據。所以遷移的時候避免重復生產數據,應該停止遷移主題的生產。同時消費不 會,同時消費之后出現短暫的leader報錯,會自動恢復。

3、新增了broker節點,如果有主題的分區在新增加的節點上,生產和消費的客戶端都應該在hosts配置文件中增加新增的 broker節點,否則無法生產消費,但是也不報錯。
————————————————
版權聲明:本文為CSDN博主「forrest_ou」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/forrest_ou/article/details/79141391


免責聲明!

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



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