2015-03-24 9 views
8

Używam kafka_2.9.2-0.8.1.1 z zookeeperem 3.4.6.Usuwanie grupy konsumenckiej kafka w zookeeperze

Czy istnieje narzędzie, które automatycznie usuwa grupę konsumentów z Zookeepera? Czy mogę po prostu usunąć wszystko z katalogu/consumer/[group_id] w zookeeper? Jeśli to drugie, czy jest coś jeszcze, czego mi brakowało? & czy można to zrobić za pomocą systemu na żywo?

Odpowiedz

12

Obecnie, jak wiem, jedynym sposobem na usunięcie grupy konsumenckiej Kafka jest ręczne usunięcie ścieżki Zookeepera /consumers/[group_id].

Jeśli chcesz tylko usunąć grupę konsumentów, nie musisz się martwić ręcznym usuwaniem ścieżki Zookeepera, ale jeśli zrobisz to, aby cofnąć przesunięcia, pomocne będą poniższe informacje.

Przede wszystkim należy zatrzymać wszystkich konsumentów należy do grupy konsumentów przed usunięciem ścieżki Zookeeper. Jeśli tego nie zrobisz, konsumenci ci nie będą konsumować nowo wyprodukowanych wiadomości i wkrótce zamkną połączenia z klastrem Zookeepera.

Po ponownym uruchomieniu klientów, jeśli chcesz, aby konsumenci zaczęli od początku, podaj wartość auto.offset.reset do smallest. Domyślną wartością właściwości jest largest, która powoduje, że konsumenci restartujący odczytują dane po największym przesunięciu, które z kolei zużywa tylko nowo utworzone wiadomości. Więcej informacji na temat właściwości można znaleźć w dokumencie 3.2 Consumer Config w dokumentacji Kafki 0.8.1.

FYI, jest pytanie How can I rewind the offset in the consumer? w Kafka FAQ, ale nie dało mi to zbytniej pomocy.

+0

Po prostu uprzątam grupy konsumentów, które były źle nazwane lub grupy konsumentów konsol losowych .. Dzięki! –

+0

Powiązane: [Co decyduje o korekcie konsumenta Kafki?] (Http://stackoverflow.com/questions/32390265/what-determines-kafka-consumer-offset) –

+0

Uwaga 'auto.offset.reset "jest ignorowany po wystąpieniu przesunięć dla grupy odbiorców, aby mogli je wykryć, gdy przerwali. Było to dla mnie kłopotliwe, ale potwierdzone przez programistów. Możesz ręcznie usunąć grupę lub uruchomić nowe pole 'group.id' z flagą' najwcześniejszą' lub 'najmniejszą' i zacząć od nowa. Sprawdź Burrow i ma API do usuwania grup i innych konserwacji i sprawdzania opóźnienia od zespołu w LinkedIN. –

14

Od wersji 0.9.0 Kafka jest dostarczana z zestawem narzędzi w wersji /bin, z których jednym jest narzędzie kafka-consumer-groups.sh. Spowoduje to usunięcie grupy odbiorców. ./kafka-consumer-groups.sh --zookeeper <zookeeper_url> --delete --group <group-name>

+1

Dzięki za wejście, ale nie było to dostępne w wersji v0.8.1.1 (jak podano w pytaniu). Jest dostępny w najnowszej wersji (0.10.0.0) –

+0

'tar tvfz kafka_2.9.2-0.8.1.1.tgz | konsument 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 –

+2

@ foo-l Wiem, że nie istnieje dla 0.8. Dzięki aktualizacjom kafka myślałem, że to pomoże ludziom, którzy obecnie szukają tego problemu. – eodgooch

11

Dla nowych konsumentów (którzy używają tematu kafka do zarządzania przesunięciami zamiast zookeepera) nie można usunąć informacji o grupie za pomocą wbudowanych narzędzi kafka.

Oto przykład starając się usunąć informacje o grupach dla nowego stylu konsumenta za pomocą kafka-consumer-groups.sh skrypt:

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. 

tutaj jest ważną częścią tej odpowiedzi:

Zauważ, że nie ma trzeba usunąć metadane grupy dla nowego konsumenta, ponieważ grupa jest usuwana po wygaśnięciu ostatniego zatwierdzonego przesunięcia dla tej grupy.

Jest to trochę denerwujące z perspektywy monitoringu (zwł. Podczas śledzenia przesunięć przez coś podobnego burrow), ponieważ oznacza to, że w przypadku zmiany nazwy grupy konsumentów w kodzie będziesz trzymać widząc, że są za starzy na grupy ich korekty do momentu wygaśnięcia tych korekt.

Hipotecznie można napisać nagrobek do tego tematu ręcznie (co dzieje się podczas offset expiration), ale nie znalazłem żadnych narzędzi, które ułatwiają to.