2016-09-20 30 views
2

我正在測試kafka的分區重新分配,作爲啓動生產系統的先驅。我有幾個主題,每個主題有9個分區,複製因子爲3.我已經殺死了一個經紀人來模擬失敗情況,並驗證了一些主題已經被複制(通過修改yahoo的kafka管理器進行驗證,以允許添加版本0.10.0.1羣集)。Kafka 0.10.0.1代理失敗後的分區重新分配

然後,我開始了一個新的經紀人與不同的ID。我現在想分配分區給這個新的經紀人。我試圖使用kafka管理員的重新分配分區功能,但是這種功能不起作用(可能是由於不恰當修改的分支)。

我看到kafka帶有bin/kafka-reassign-partitions.sh腳本,但文檔說我必須手動爲每個json格式的主題寫出分區重新分配。有沒有辦法處理這個問題,而無需手動決定哪些代理分區必須去?

回答

2

嗯真是一個巧合,我今天做了完全一樣的事情。我沒有你可能會喜歡的答案,但最終達到了我想要的結果。

最終,我所做的是使用與重新分配相同的工具來執行kafka-reassign-partitions命令。但無論它產生了什麼,我只是用舊的失敗的經紀人ID替換新的經紀人ID。出於某種原因,生成的json移動了一切。

這會失敗(或者說從來沒有完成),因爲舊的經紀人已經過去了。然後我必須刪除zookeeper中的重新分配操作(znode:admin/reassign_partitions或其他)。

然後,我重新啓動了新的經紀人kafka,它奇蹟般地成爲尋找新替代品領導者的分區的領導者。

我會告訴你,知道,如果一切都還在工作,明天如果我仍然有工作;-)

+0

你的意思是你使用雅虎的卡夫卡管理器生成的重新分配JSON? – novon

+0

我使用了cli utils - kafka-reassign-partitions(或kafka-reassign-partitions.sh)。我從自制軟件安裝了kafka,但kafka安裝也包含utils。 – ekeyser

+0

我還使用Netflix的Zookeeper展商包,它允許您查看/修改zookeeper znodes。但是你可以通過它的utils來管理Zookeeper。 – ekeyser