kafka集群擴容後的topic分割槽遷移

2022-08-26 23:36:24 字數 4038 閱讀 7592

kafka集群擴容後,新的broker上面不會資料進入這些節點,也就是說,這些節點是空閒的;它只有在建立新的topic時才會參與工作。除非將已有的partition遷移到新的伺服器上面;

所以需要將一些topic的分割槽遷移到新的broker上。

kafka-reassign-partitions.sh是kafka提供的用來重新分配partition和replica到broker上的工具

簡單實現重新分配需要三步:

1. 生成分配計畫

編寫分配指令碼:

vi topics-to-move.json

內容如下:

],

"version": 1

}

執行分配計畫生成指令碼:

kafka-reassign-partitions.sh --zookeeper $zk_connect --topics-to-move-json-file topics-to-move.json --broker-list "5,6,7,8" --generate

執行結果如下:

[hadoop@sdf-nimbus-perf topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $zk_connect --topics-to-move-json-file topics-to-move.json --broker-list "5,6,7,8" --generate

current partition replica assignment #當前分割槽的副本分配

,]}proposed partition reassignment configuration #建議的分割槽配置

,]}

proposed partition reassignment configuration 後是根據命令列的指定的brokerlist生成的分割槽分配計畫json格式。將 proposed partition reassignment configuration的配置copy儲存到乙個檔案中 topic-reassignment.json

vi topic-reassignment.json

,]}

2. 執行分配(execute)

根據step1 生成的分配計畫配置json檔案topic-reassignment.json,進行topic的重新分配。

kafka-reassign-partitions.sh --zookeeper $zk_connect --reassignment-json-file topic-reassignment.json --execute
執行前的分割槽分布:

[hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request

topic:event_request partitioncount:2 replicationfactor:2 configs:

topic: event_request partition: 0 leader: 3 replicas: 3,4 isr: 3,4

topic: event_request partition: 1 leader: 4 replicas: 4,5 isr: 4,5

執行後的分割槽分布:

[hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request

topic:event_request partitioncount:2 replicationfactor:4 configs:

topic: event_request partition: 0 leader: 3 replicas: 6,5,3,4 isr: 3,4

topic: event_request partition: 1 leader: 4 replicas: 7,6,4,5 isr: 4,5

3. 檢查分配的狀態

檢視分配的狀態:正在進行

[hadoop@sdf-nimbus-perf topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $zk_connect --reassignment-json-file topic-reassignment.json --verify

status of partition reassignment:

reassignment of partition [event_request,0] is still in progress

reassignment of partition [event_request,1] is still in progress

[hadoop@sdf-nimbus-perf topic_reassgin]$

檢視「is still in progress」 狀態時的分割槽,副本分布狀態:

發現replicas有4個哦,說明在重新分配的過程中新舊的副本都在進行工作。

[hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request

topic:event_request partitioncount:2 replicationfactor:4 configs:

topic: event_request partition: 0 leader: 3 replicas: 6,5,3,4 isr: 3,4

topic: event_request partition: 1 leader: 4 replicas: 7,6,4,5 isr: 4,5

檢視分配的狀態:分配完成。

[hadoop@sdf-nimbus-perf topic_reassgin]$ kafka-reassign-partitions.sh --zookeeper $zk_connect --reassignment-json-file topic-reassignment.json --verify

status of partition reassignment:

reassignment of partition [event_request,0] completed successfully

reassignment of partition [event_request,1] completed successfully

檢視「completed successfully」狀態的分割槽,副本狀態:

已經按照生成的分配計畫正確的完成了分割槽的重新分配。

[hadoop@sdf-nimbus-perf topic_reassgin]$ le-kafka-topics.sh --describe --topic event_request

topic:event_request partitioncount:2 replicationfactor:2 configs:

topic: event_request partition: 0 leader: 6 replicas: 6,5 isr: 6,5

topic: event_request partition: 1 leader: 7 replicas: 7,6 isr: 6,7

Kafka 集群的擴容

將現有的集群上任乙個伺服器上的kafka目錄拷貝到新的伺服器上 修改config server.properties中的broker.id log.dirs listeners 建立logs.dirs指定的目錄,並設定讀寫許可權 chomd r 777 broker.id 3log dirs kaf...

kafka集群擴容以及資料遷移

一 kafka集群擴容比較簡單,機器配置一樣的前提下只需要把配置檔案裡的brokerid改乙個新的啟動起來就可以。比較需要注意的是如果公司內網dns更改的不是很及時的話,需要給原有的舊機器加上新伺服器的host,不然可能會產生controller伺服器從zk上拿到網域名稱但是解析不到新機器位址的情況...

Kafka學習整理九 集群的擴容

將現有的集群上任乙個伺服器上的kafka目錄拷貝到新的伺服器上 修改config server.properties中的broker.id log.dirs listeners 建立logs.dirs指定的目錄,並設定讀寫許可權 chomd r 777 broker.id 3log dirs kaf...