2015-09-23 30 views
1

我將數百個主題從一個代理移動到另一個代理。這個過程是kafka:副本和ISR不匹配

  1. 使用kafka-topics.sh以產生現有分區列表
  2. 使用kafka-reassign-partitions.sh生成/分區/經紀人的最新列表等
  3. 編輯該列表,以便經紀人7的每個實例(被替換)現在經紀人7,4(4新經紀人)
  4. 運行kafka-reassign-partitions.sh (broker list) --execute增加新的經紀
  5. 等待..看..(使用--verify)..直到ç omplete ...
  6. 編輯券商名單是經紀人4,7
  7. DO(4)再次..做(5)再次..
  8. 運行首選地區領導人選舉(的情況下,7是領先的任何東西)
  9. 編輯經紀人列表中刪除經紀人的所有實例7
  10. DO(4)和(5)再次
  11. 要快樂

這對於數百和數百個主題非常有效,除了一個粘性的主題。這種抵抗拒絕與新的代理(從ISR列表丟失)同步起來,即使它包含在副本列表

kafka-topics.sh輸出(試圖與經紀人4更換經紀人7):

主題:shard_3分區:7領導:3副本:3,4,7 Isr:7,3

我已經運行(4)以上幾次希望得到這個完成,但它似乎並沒有想要。如果它真的很慢,我一整夜都在等。

關於如何解除這個問題的建議?

回答

1

原來,牽頭經紀人對某事感到不安,分區清單並未保持最新狀態。

解決方案:

  1. bin/zkCli.sh -server <kafka broker in cluster>
  2. get /controller
  3. 重啓該控制器上卡夫卡服務 - 這將控制傳遞到另一個箱
  4. 重試命令分區