Kafka運維

如何在Kafka上建立topic?

手工腳本建立

./kafka-topics.sh –zookeeper 127.0.0.1:2181 –create –topic test.example –replication-factor 2 –partitions 12
  • -topic制定topic的name
  • –partitions指定分區數,這個參數要根據broker數和數據量決定,通常狀況下每一個Broker上兩個分區最好
  • –replication-factor指定partition的replicas數,建議設置爲2

自動建立

開啓自動建立配置:auto.create.topics.enable=true ,使用程序直接往kafka中相應的topic發送數據,若是topic不存在就會按默認配置進行建立。json

如何在Kafka上對一個Topic增長partition?

經過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上對一個Topic增長replicas?

操做步驟日下:運維

  • 查看topic的詳細信息
./kafka-topics.sh –zookeeper 127.0.0.1:2181 –describe –topic test.example
  • 修改配置文件
    建立json文件partitions-to-move.json ,修改內容以下:
{
「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

如何在Kafka中對Topic的leader進行均衡?

在建立一個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工具

  • 對全部topic進行操做
./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181
  • 對特定的topic操做

編寫json文件操作系統

{
 "partitions":
  [
    {"topic":"test.example","partition": "0"}
  ]
}

執行一下腳本code

./kafka-preferred-replica-election.sh --zookeeper 127.0.0.1:2181 --path-to-json-file *.json

Kafka下線broker的操做

主動下線是指broker運行正常,由於機器須要運維(升級操做系統,添加磁盤等)而主動中止broker,分兩種狀況處理:server

全部的topic的replica >= 2

此時,直接中止一個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的replica=1

當存在topic的副本數小於2,只能手工把當前broker上這些topic對應的partition轉移到其餘broker上。當此broker上剩餘的topic的replica > 2時,參照上面的處理方法繼續處理io

相關文章
相關標籤/搜索