kafka 系列 5 1 分割槽管理

2021-10-23 17:09:31 字數 3210 閱讀 4566

分割槽重分配

複製限流

修改副本因子

當我們輸入以下命令,

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的訊息可以看成是 的結構 主題 分割槽 訊息。每個分割槽下可以存在若干個副本,副本用來進行資料備份,提公升容災能力。分割...