2015-03-24 128 views
8

我使用kafka_2.9.2-0.8.1.1和zookeeper 3.4.6。刪除動物園管理員中的卡夫卡消費者組

是否有一個實用工具可以自動從zookeeper中刪除一個用戶組?或者我可以刪除zookeeper中/ consumers/[group_id]下的所有內容嗎?如果是後者,還有什麼我失蹤&這可以通過現場系統來完成嗎?

回答

12

目前,據我所知,刪除卡夫卡用戶組的唯一方法是手動刪除Zookeeper路徑/consumers/[group_id]

如果你只是想刪除一個使用者羣,沒有必要擔心手動刪除Zookeeper路徑,但是如果你這樣做是爲了倒退偏移量,下面的內容將會很有幫助。

首先,您應該在移除Zookeeper路徑之前停止屬於消費者組的所有消費者。如果你不這樣做,那些消費者將不會消費新產生的消息,並且很快會關閉到Zookeeper集羣的連接。

當您重新啓動使用者時,如果您希望使用者從頭開始,請將auto.offset.reset屬性設置爲smallest。該屬性的默認值爲largest,這會使重新啓動的使用者在最大偏移量之後進行讀取,而最大偏移量僅消耗新產生的消息。有關該屬性的更多信息,請參閱Kafka 0.8.1文檔中的3.2 Consumer Config

僅供參考,在卡夫卡常見問題解答中有一個問題How can I rewind the offset in the consumer?,但它給了我很多幫助。

+0

只是清理錯誤消費羣體或隨機控制檯消費羣體..謝謝! – 2015-03-25 18:31:18

+0

相關:[什麼決定卡夫卡消費者抵消?](http://stackoverflow.com/questions/32390265/what-determines-kafka-consumer-offset) – 2016-05-18 16:12:53

+0

注意'auto.offset。在消費者組存在偏移之後,「重置」被忽略,以便如果關閉,他們可以從他們離開的地方取回。這讓我感到困惑,但是從開發者那裏得到證實。您可以手動刪除該組,或者下一次運行,使用「最早」或「最小」標誌啓動一個新的'group.id'並重新開始。檢查出Burrow並且擁有用於刪除LinkedIN團隊的其他維護和延遲檢查的API。 – 2016-07-03 04:54:48

14

從v0.9.0開始,Kafka在/bin附帶一套工具,其中一個工具是kafka-consumer-groups.sh工具。這將刪除一個用戶組。 ./kafka-consumer-groups.sh --zookeeper <zookeeper_url> --delete --group <group-name>

+1

感謝您的輸入,但這在v0.8.1.1中不可用(如問題所述)。它在最新版本中提供(0.10.0.0) – 2016-07-05 22:41:09

+0

'tar tvfz kafka_2.9.2-0.8.1.1.tgz | grep消費者| cut -c 49 -' kafka_2.9.2-0.8.1.1/bin/kafka-simple-consumer-shell.sh kafka_2.9.2-0.8.1.1/bin/kafka-console-consumer.sh kafka_2.9.2- 0.8.1.1/bin/kafka-simple-consumer-perf-test.sh kafka_2.9.2-0.8.1.1/bin/kafka-consumer-perf-test.sh kafka_2.9.2-0.8.1.1/bin/windows/kafka-console-consumer.bat kafka_2.9.2-0.8.1.1/config/consumer.properties – 2016-07-05 22:45:52

+2

@ foo-l我知道它不存在0.8。由於kafka更新,我認爲這將有助於目前正在尋找問題的人。 – eodgooch 2016-07-06 20:13:15

11

對於新消費者(使用kafka主題管理偏移量而不是動物園管理員),您無法使用kafka的內置工具刪除組信息。

這裏是試圖使用kafka-consumer-groups.sh腳本刪除新式的消費羣信息的一個例子:

bin/kafka-consumer-groups.sh --bootstrap-server "kafka:9092" --delete --group "indexer" --topic "cleaned-logs" 
Option '[delete]' is only valid with '[zookeeper]'. Note that there's no need to delete group metadata for the new consumer as the group is deleted when the last committed offset for that group expires. 

下面是響應的重要組成部分:

注意,有沒有需要刪除新消費者的組元數據,因爲該組在最後一次提交的偏移量到期時將被刪除。

這是從監測的角度講那種惱人的(特別是通過像burrow跟蹤偏移時),因爲它意味着,如果你在你的代碼改變消費者的組名,你會一直看到舊羣體背後直到抵消期滿爲止。

假設您可以手動爲該主題編寫一個墓碑(這是在offset expiration期間發生的情況),但我還沒有找到任何工具可以使這一切變得簡單。