分割槽重分配
複製限流
修改副本因子
當我們輸入以下命令,
kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic test4
檢視主題詳情時,會展示如下資訊
其中replicas
就是ar
。
現,我們將brokerid 2
的機器重啟,kafka
會從isr
副本中選出乙個新的節點作為leader
,brokerid
為 2 的機器重啟後,只能作為follower
從上圖,可以看到,partition 1
選出了新的leader 3
,從而導致,brokerid 3
負載較高。
為此,kafka
引進優先副本概念。
優先副本為replicas
列表中的第乙個節點。對於partition 1
來說就是brokerid 2
的節點。也就是說,paritition 1
按理leader
應該為 2,而非 3。
分割槽自動平衡
kafka
可在broker
端,通過auto.leader.rebalance.enable
控制是否開啟分割槽自動平衡,該引數預設為true
,即預設開啟。
如果開啟分割槽自動平衡,kafka
會定時輪詢所有的broker
節點,計算每個broker
節點分割槽不平衡率(不平衡的leader
數 / 分割槽總數 )是否超過leader.imbalance.per.broker.percentage
引數配置的比例,預設為10%
。如果超過,則自動執行分割槽平衡。其中,定時輪詢任務的執行週期預設為 300秒,由引數leader.imbalance.check.interval.seconds
。
分割槽手動平衡
kafka
中提供kafka-preferred-replica-election.sh
指令碼對leader
分割槽重新平衡。
在這裡,我們需要對 主題test4
中的partition 1
進行重分配
建立 test4_election.json 檔案(檔案自己命名)
]}
輸入命令,指定剛才建立的檔案
kafka-preferred-replica-election.sh --zookeeper zookeeper:
2181
--path-to-json-file test4_election.json
當我們需要提前下線乙個節點,或者新增乙個節點時,都需要對分割槽進行重分配。kafka
提供kafka-reassign-partitions.sh
指令碼執行分割槽重分配。
先看執行前test4
的分割槽如下
現要讓brokerid 2
節點下線。那麼就需要對parition 0
,partition 1
重新分配。
編寫 test4_reassign.json 檔案
,]
,"version":1
}
執行命令
kafka-reassign-partitions.sh --zookeeper zookeeper:2181 --execute --reassignment-json-file test4_reassign.json
執行完後,新的分割槽分配如下
分割槽重分配的基本原理是:broker
控制器為每個分割槽新增副本,然後再複製 leader 副本的資料。複製完畢之後,最後將舊副本刪除掉。
從分割槽重分配的原理了解到,複製的時候會發生大量的網路傳輸,此時如果業務流量特別大,那麼可能會對當前業務造成影響,因此需要對複製進行限流。
kafka-reassign-partitions.sh 限流
kafka-reassign-partitions.sh --zookeeper zookeeper:2181 --execute --reassignment-json-file test4_reassign.json --throttle 1024
使用kafka-reassign-partitions.sh
,進行副本因子的修改。
生成重分配 json
kafka-reassign-partitions.sh --zookeeper zookeeper:2181 --generate --topics-to-move-json-file test5_reassign.json --broker-list 1,2,3
將紅色框的內容,複製的 json 檔案中
,,
]}
開始重分配
kafka-reassign-partitions.sh --zookeeper zookeeper:2181 --execute --reassignment-json-file test4_reassign.json
重分配結果如下 kafka入門(二)分割槽和group
topic 在kafka中訊息是按照topic進行分類的 每條發布到kafka集群的訊息都有乙個類別,這個類別被稱為topic parition 乙個topic可以配置幾個parition,每乙個分割槽都是乙個順序的 不可變的訊息佇列,並且可以持續的新增。分割槽中的訊息都被分了乙個序列號,稱之為偏移...
儲存管理1 分割槽管理,夥伴系統
本文為筆記總結 多道程式儲存管理 分割槽程式管理 分為系統區,使用者區 再分為若干分割槽 一 固定分割槽儲存管理 分割槽大小個數確定不變 特點 簡單,開銷小,內部碎片浪費,分割槽總數固定,缺乏記憶體保護 程式大小不超過分割槽大小 二 可變分割槽管理 從使用者區動態建立,不預先分割槽 最後會形成占用區...
kafka系列 主題和分割槽
使用kafka的同學,一定會經常接觸到主題和分割槽這兩個概念,這是kafka中最核心的兩個概念了。主題作為乙個邏輯容器,對訊息進行歸類,主題下又可以分成若干個分割槽。所以kafka的訊息可以看成是 的結構 主題 分割槽 訊息。每個分割槽下可以存在若干個副本,副本用來進行資料備份,提公升容災能力。分割...