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...