kafka叢集維護
- 1、叢集資訊實時檢視工具(topic工具)
- 2、kafka叢集leader平衡機制
- 3、叢集分區日志遷移
1、叢集資訊實時檢視工具(topic工具)
(1)列出叢集目前所有可用的topic
kafka-topics.sh --list --zookeeper kafka1:2181

(2)檢視叢集特定的topic資訊
/bin/kafka-topics.sh --describe --zookeeper 192.168.12.150:2181 --topic test-topic
(3)建立topic
bin/kafka-topics.sh --create --zookeeper kafka1:2181 --replication-factor 3 --partitions 1 --topic Multibrokerapplication
(4)增加(不能減少)分區(最後的4表示增加後的值)–提高并發度
bin/kafka-topics.sh --zookeeper kafka1:2181 --alter --topic test-topic --partitions 4
2、kafka叢集leader平衡機制
每一個partition的所有replicas副本叫做“assinged replicas”配置設定備份,配置設定副本中的第一個replicas叫做“preferred replica”偏愛備份,剛建立的topic一般偏愛副本是leader。
叢集leader平衡
如果偏愛分區不是leader的情況可以操作如下(手動)
bin/kafka-preferred-replica-election.sh --zookeeper kafka1:2181
自動設定偏愛分區是否是leader,如果不是則動态運作以上指令
auto.leader.rebalance.enable=true
3、叢集分區日志遷移
如果最開始的叢集的機器隻有10台,新增加4台機器,此時想把之前10台上的資料遷移到新增加的四台上,比如遷移某個topic或者遷移某個topic的某個分區到新增加的機器上,需要用到叢集分區,日志遷移工具
1、遷移整個topic資料到其他的broker上,遵循如下四個步驟:
(1)編寫json檔案topics-to-move.json,檔案格式如下
{
"topics":[{"topic": "foo1"}, {"topic":"foo2"}],
"version":1
}
(2)使用–generate生成遷移計劃
如下操作是将topic: foo1和foo2移動到broker5和broker6中
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --topic-to-move-json-file topics-to-move.json --broker-list "5,6" --generate
這一步僅僅是生成計劃,斌沒有執行資料遷移(指定遷移配置檔案和指定遷移的broker清單),控制台将列印目前分區計劃和新的分區計劃。
将生成的計劃儲存到expand-cluster-reassignment.json中。
(3)使用–execute執行計劃
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --execute
執行前最好儲存目前的配置設定情況,以防止出錯復原!
(4)使用–verrify驗證是否已經遷移完成
bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file expand-cluster-reassignment.json --verify
(5)最後檢視某個topic的配置設定情況
bin/kafka-topic --describe --zookeeper localhost:2181 --topic foo1
2、遷移某個topic的某些特定的partition資料到其他broker,步驟與上面一樣
隻需更改遷移配置檔案即可,這裡使用custom-reassignment.json配置檔案
vim custom-reassignment.json
修改内容
{
"version": 1,
"partitions":[{"topic": "foo1", "partition": 0, "replicas": [5, 6]}, {"topic": "foo2", "partition": 1, "replicas": [2, 3]} ]
}
将foo1主題的0分區,遷移到5,6上,foo2主題的1分區遷移到2,3上
3、注意問題
kafka-reassign-partitions.sh工具會複制磁盤上的日志檔案,隻有當完全複制完成才會删除遷移前磁盤上的日志檔案。執行分區日志遷移需要注意:
(1)kafka-reassign-partitions.sh工具的粒度隻能到broker,不能到broker的目錄(如果broker配置了多個目錄,是按照磁盤上面已駐留的分區數來均勻配置設定的),是以如果topic之間的資料,或者topic的partition之間的資料本身就不均勻,很可能造成磁盤資料的不均勻。
(2)對于分區資料較多的分區遷移資料會花大量時間,是以建議在topic資料量較少或磁盤有效資料較少的情況下執行資料遷移操作
(3)進行分區遷移時最好保留一個分區在原來的磁盤,這樣不會影響正常的消費和生産,如果目的是将分區5(broker1,5,leader為1,作為主軸)遷移到broker2,3.可以先将5遷移到2,1(1沒有變,還是leader,伺服器5上資料到了2上,1上的資料沒有變),最後在遷移1的5分區 到2,3(然後将2作為leader,2不變1遷移到3),。而不是一次将1,5遷移到2,3(因為此時可能有生産和消費者在生産和消費).因為一次遷移所有的副本,無法正常消費和生産,部分遷移則可以正常消費和生産。
快來成為我的朋友或合作夥伴,一起交流,一起進步!:
QQ群:961179337
微信:lixiang6153
郵箱:[email protected]
公衆号:IT技術快餐
更多資料等你來拿!