將現有的集群上任乙個伺服器上的kafka目錄拷貝到新的伺服器上修改config/server.properties中的broker.id、log.dirs、listeners
建立logs.dirs指定的目錄,並設定讀寫許可權(chomd -r 777 ***)
broker.id=
3log
.dirs=kafka-logs
listeners=plaintext:
bin/kafka-server-start.sh config/server.properties &
雖然經過上面兩個步驟後已經完成了集群的擴容;但是集群上原有的topic的資料不會自動遷移到新的broker上。可以在新的broker所在的伺服器上通過ls /home/lxh/kafka_2.11-0.10.0.0/kafka-logs
檢視到並沒有一原有的topic名稱的檔案目錄(因為建立topic後會在config/server.properties中的配置的log.dirs 目錄中生產以topic名稱+分割槽編號的檔案目錄);那麼就需要手動的區遷移資料
建立編輯要遷移的topic的 json檔案
vi topic-to
-move
.json
比如要將topic名稱為test和paritioer_test的資料重新平衡到集群中,就可以新增以下內容
,
],"version":1
}
生成遷移分配規則json檔案
bin/kafka-reassign
-partitions
.sh --zookeeper localhost:2181
--topics-to
-move
-json
-file topic-to
-move
.json --broker-list
"0,1,2"
--generate
得到的結果為
current partition replica assignment
,,,,,]}
proposed partition reassignment configuration
,,,,,]}
其中的current partition replica assignment指的是遷移前的partition replica;proposed partition reassignment configuration 指的就是遷移分配規則json。需要將該json檔案儲存到json檔案中(如expand-cluster-reassignment.json)注意:在遷移過程中不能人為的結束或停止kafka服務,不然會有資料不一致的問題在執行的過程中,可以新開乙個終端執行以下命令來檢視執行是否正確完成輸出bin/kafka-reassign
-partitions
.sh --zookeeper localhost:2181
--reassignment-json
-file expand-cluster
-reassignment
.json --verify
在遷移完成過程後,可以使用以下命令看下topic的每個partitions的分布情況status
of partition reassignment:
reassignment
of partition [test,4] completed successfully
reassignment
of partition [test,0] completed successfully
reassignment
of partition [paritioer_test,0] completed successfully
reassignment
of partition [test,3] completed successfully
reassignment
of partition [test,2] completed successfully
reassignment
of partition [test,1] completed successfully
bin/kafka
-topics.sh
--zookeeper
172.16.
49.173:2181--
describe--
topic
test
topic:test partitioncount:5 replicationfactor:2 configs:
topic: test partition: 0 leader: 0 replicas: 0,1 isr: 0,1
topic: test partition: 1 leader: 1 replicas: 1,2 isr: 1,2
topic: test partition: 2 leader: 2 replicas: 2,0 isr: 0,2
topic: test partition: 3 leader: 0 replicas: 0,2 isr: 0,2
topic: test partition: 4 leader: 0 replicas: 1,0 isr: 0,1
可以看到名為test的topic的有的資料以及存在於編號為2的新broker上了kafka集群擴容以及資料遷移
一 kafka集群擴容比較簡單,機器配置一樣的前提下只需要把配置檔案裡的brokerid改乙個新的啟動起來就可以。比較需要注意的是如果公司內網dns更改的不是很及時的話,需要給原有的舊機器加上新伺服器的host,不然可能會產生controller伺服器從zk上拿到網域名稱但是解析不到新機器位址的情況...
kafka集群擴容後的topic分割槽遷移
kafka集群擴容後,新的broker上面不會資料進入這些節點,也就是說,這些節點是空閒的 它只有在建立新的topic時才會參與工作。除非將已有的partition遷移到新的伺服器上面 所以需要將一些topic的分割槽遷移到新的broker上。kafka reassign partitions.sh...
Kafka學習整理九 集群的擴容
將現有的集群上任乙個伺服器上的kafka目錄拷貝到新的伺服器上 修改config server.properties中的broker.id log.dirs listeners 建立logs.dirs指定的目錄,並設定讀寫許可權 chomd r 777 broker.id 3log dirs kaf...