./kafka-topics.sh –zookeeper 127.0.0.1:2181 –create –topic test.example –replication-factor 2 –partitions 12
開啓自動建立配置:auto.create.topics.enable=true ,使用程序直接往kafka中相應的topic發送數據,若是topic不存在就會按默認配置進行建立。json
經過kafka-topics.sh工具的alter命令,將test.example的partitions從12增長到20負載均衡
./kafka-topics.sh –zookeeper 127.0.0.1:2181 –alter –partitions 20 –topic test.example
操做步驟日下:運維
./kafka-topics.sh –zookeeper 127.0.0.1:2181 –describe –topic test.example
{ 「partitions」: [ { 「topic」: 「test.example」, 「partition」: 0, 「replicas」: [0,4] } ,version」:1 }
kafka-reassign-partitions.sh –zookeeper 127.0.0.1:2181 –reassignment-json-file partitions-to-move.json –execute
kafka-topics.sh –zookeeper 127.0.0.1:2181 –describe –topic test.example
在建立一個topic時,kafka儘可能將partition均分在全部的brokers上,而且將replicas也j均分在不一樣的broker上。每一個partitiion的全部replicas叫作"assigned replicas","assigned replicas"中的第一個replicas叫"preferred replica",剛建立的topic通常"preferred replica"是leader。leader replica負責全部的讀寫。但隨着時間推移,broker可能會停機,會致使leader遷移,致使機羣的負載不均衡。咱們指望對topic的leader進行從新負載均衡,讓partition選擇"preferred replica"作爲leader工具
./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181
編寫json文件操作系統
{ "partitions": [ {"topic":"test.example","partition": "0"} ] }
執行一下腳本code
./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181 --path-to-json-file *.json
主動下線是指broker運行正常,由於機器須要運維(升級操做系統,添加磁盤等)而主動中止broker,分兩種狀況處理:server
此時,直接中止一個broker,會自動觸發leader election操做,不過目前leader election是逐個partition進行,等待全部partition完成leader election耗時較長,這樣不可服務的時間就比較長。爲了縮短不可服務時間窗口,能夠主動觸發中止broker操做,這樣能夠逐個partition轉移,直到全部partition完成轉移,再中止broker。kafka
./kafka-run-class.sh kafka.admin.ShutdownBroker --zookeeper 127.0.0.1:2181 --broker #brokerId# --num.retries 3 --retry.interval.ms 60
shutdown Brokerit
./kafka-server-stop.sh
當存在topic的副本數小於2,只能手工把當前broker上這些topic對應的partition轉移到其餘broker上。當此broker上剩餘的topic的replica > 2時,參照上面的處理方法繼續處理io