天天看點

15、kafka叢集維護1、叢集資訊實時檢視工具(topic工具)2、kafka叢集leader平衡機制3、叢集分區日志遷移

kafka叢集維護

  • 1、叢集資訊實時檢視工具(topic工具)
  • 2、kafka叢集leader平衡機制
  • 3、叢集分區日志遷移

1、叢集資訊實時檢視工具(topic工具)

(1)列出叢集目前所有可用的topic

kafka-topics.sh --list --zookeeper kafka1:2181

15、kafka叢集維護1、叢集資訊實時檢視工具(topic工具)2、kafka叢集leader平衡機制3、叢集分區日志遷移

(2)檢視叢集特定的topic資訊

/bin/kafka-topics.sh --describe --zookeeper 192.168.12.150:2181 --topic test-topic

15、kafka叢集維護1、叢集資訊實時檢視工具(topic工具)2、kafka叢集leader平衡機制3、叢集分區日志遷移

(3)建立topic

bin/kafka-topics.sh --create --zookeeper kafka1:2181 --replication-factor 3 --partitions 1 --topic Multibrokerapplication

15、kafka叢集維護1、叢集資訊實時檢視工具(topic工具)2、kafka叢集leader平衡機制3、叢集分區日志遷移

(4)增加(不能減少)分區(最後的4表示增加後的值)–提高并發度

bin/kafka-topics.sh --zookeeper kafka1:2181 --alter --topic test-topic --partitions 4

15、kafka叢集維護1、叢集資訊實時檢視工具(topic工具)2、kafka叢集leader平衡機制3、叢集分區日志遷移

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技術快餐

更多資料等你來拿!

繼續閱讀