2015-03-24 10 views
8

Sto usando kafka_2.9.2-0.8.1.1 con zookeeper 3.4.6.rimozione di un gruppo di consumatori kafka in zookeeper

Esiste un programma di utilità in grado di rimuovere automaticamente un gruppo di utenti da zookeeper? O posso semplicemente rimuovere tutto sotto/consumers/[group_id] in zookeeper? Se quest'ultimo, c'è qualcos'altro mi manca & può essere fatto con un sistema live?

risposta

12

Attualmente, come noto, l'unico modo per rimuovere un gruppo di utenti Kafka consiste nell'eliminare manualmente il percorso Zookeeper /consumers/[group_id].

Se si desidera eliminare un gruppo di consumatori, non c'è nulla di cui preoccuparsi di eliminare manualmente il percorso Zookeeper, ma se lo si fa per il riavvolgimento degli offset, il di seguito sarà utile.

Prima di tutto, è necessario interrompere tutti gli utenti appartengono al gruppo di utenti prima di rimuovere il percorso Zookeeper. In caso contrario, questi consumatori non consumeranno messaggi di nuova produzione e chiuderanno presto le connessioni al cluster Zookeeper.

Quando si riavviano i consumatori, se si desidera che i consumatori inizino dall'inizio, assegnare la proprietà auto.offset.reset a smallest. Il valore predefinito della proprietà è largest che consente ai clienti che si riavviano a leggere dopo l'offset maggiore, che a sua volta consuma solo messaggi di nuova produzione. Per ulteriori informazioni sulla proprietà, fare riferimento a 3.2 Consumer Config nella documentazione di Kafka 0.8.1.

FYI, c'è una domanda How can I rewind the offset in the consumer? in Domande frequenti su Kafka, ma non mi ha dato molto aiuto.

+0

Basta ripulire i gruppi di consumatori che sono stati erroneamente definiti o gruppi di console di console casuali .. Grazie! –

+0

Correlati: [Che cosa determina l'offset del consumatore Kafka?] (Http://stackoverflow.com/questions/32390265/what-determines-kafka-consumer-offset) –

+0

Note 'auto.offset.reset' viene ignorato dopo che ci sono degli offset per un gruppo di consumatori in modo che possano riprendere da dove sono stati interrotti se arrestati. Questo mi ha confuso, ma confermato dagli sviluppatori. È possibile eliminare manualmente il gruppo, o la prossima esecuzione avvia un nuovo 'group.id' con il flag' earliest' o 'smallest' e ricomincia. Dai un'occhiata a Burrow e disponi di API per l'eliminazione di gruppi e altri interventi di manutenzione e ritardi dal team su LinkedIN. –

14

A partire dalla v0.9.0, Kafka viene fornito con una suite di strumenti nello /bin uno dei quali è lo strumento kafka-consumer-groups.sh. Questo cancellerà un gruppo di consumatori. ./kafka-consumer-groups.sh --zookeeper <zookeeper_url> --delete --group <group-name>

+1

Grazie per l'input, ma questo non era disponibile in v0.8.1.1 (come indicato nella domanda). È disponibile nell'ultima versione (0.10.0.0) –

+0

'tar tvfz kafka_2.9.2-0.8.1.1.tgz | grep consumer | 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 So che non esisteva per 0.8. Grazie agli aggiornamenti di kafka ho pensato che questo avrebbe aiutato le persone che attualmente cercano il problema. – eodgooch

11

Per i nuovi consumatori (che utilizzano un argomento di kafka per gestire gli offset anziché il guardiano dello zoo) non è possibile eliminare le informazioni del gruppo utilizzando gli strumenti incorporati di kafka.

Ecco un esempio di cercare di eliminare le informazioni gruppo per un nuovo consumatore stile utilizzando lo script 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. 

Ecco la parte importante di questa risposta:

Nota che non c'è è necessario eliminare i metadati di gruppo per il nuovo consumatore quando il gruppo viene eliminato quando scade l'ultimo offset impegnato per quel gruppo.

Questo è un po 'fastidioso da una prospettiva di monitoraggio (esp., Quando il monitoraggio compensazioni via qualcosa come burrow) perché significa che se si cambia i nomi dei gruppi di consumatori nel codice potrai continuare a vedere che i vecchi gruppi sono dietro su le loro compensazioni fino alla scadenza di tali scostamenti.

Ipoteticamente si potrebbe scrivere una lapide su quell'argomento manualmente (che è ciò che accade durante lo offset expiration) ma non ho trovato alcuno strumento che lo renda facile.

Problemi correlati