J'utilise kafka_2.9.2-0.8.1.1 avec zookeeper 3.4.6.
Existe-t-il un utilitaire qui peut supprimer automatiquement un groupe de consommateurs de zookeeper? Ou puis-je simplement supprimer tout sous/consommateurs/[group_id] dans zookeeper? Si ce dernier, y a-t-il autre chose qui me manque peut-il être fait avec un système en direct?
Mise à jour: à partir de kafka version 2.3.0, il existe un nouvel utilitaire:
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group my-group
Doc connexe: http://kafka.Apache.org/documentation/#basic_ops_consumer_lag
Voir ci-dessous pour plus de discussion
Actuellement, comme je le sais, la seule façon de supprimer un groupe de consommateurs Kafka est de supprimer manuellement le chemin Zookeeper /consumers/[group_id]
.
Si vous souhaitez simplement supprimer un groupe de consommateurs, il n'y a rien à craindre de supprimer manuellement le chemin Zookeeper, mais si vous le faites pour rembobiner les décalages, ce qui suit sera utile.
Tout d'abord, vous devez arrêter tous les consommateurs appartenant au groupe de consommateurs avant de supprimer le chemin Zookeeper. Si vous ne le faites pas, ces consommateurs ne consommeront pas les messages nouvellement produits et fermeront bientôt les connexions au cluster Zookeeper.
Lorsque vous redémarrez les consommateurs, si vous souhaitez que les consommateurs démarrent depuis le début, indiquez auto.offset.reset
propriété à smallest
(ou earliest
dans les nouvelles versions Kafka). La valeur par défaut de la propriété est largest
(ou latest
in new Kafka releases) qui fait lire vos consommateurs au redémarrage après le plus grand décalage qui à son tour ne consomme que les nouveaux messages produits. Pour plus d'informations sur la propriété, reportez-vous à Consumer Config dans la documentation Kafka.
Pour info, il y a une question Comment puis-je rembobiner l'offset dans le consommateur? in Kafka FAQ, mais cela ne m'a pas beaucoup aidé.
Depuis la v0.9.0, Kafka est livré avec une suite d'outils dans le /bin
dont l'un est le kafka-consumer-groups.sh
outil. Cela supprimera un groupe de consommateurs. ./kafka-consumer-groups.sh --zookeeper <zookeeper_url> --delete --group <group-name>
Pour les nouveaux consommateurs (qui utilisent une rubrique kafka pour gérer les décalages au lieu de zookeeper), vous ne pouvez pas supprimer les informations de groupe à l'aide des outils intégrés de kafka.
Voici un exemple de tentative de suppression des informations de groupe pour un nouveau consommateur de style à l'aide de kafka-consumer-groups.sh
script:
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.
Voici la partie importante de cette réponse:
Notez qu'il n'est pas nécessaire de supprimer les métadonnées de groupe pour le nouveau consommateur car le groupe est supprimé lorsque le dernier décalage validé pour ce groupe expire.
C'est un peu ennuyeux du point de vue de la surveillance (en particulier lors du suivi des décalages via quelque chose comme terrier ) car cela signifie que si vous changez les noms des groupes de consommateurs dans votre code, vous continuerez de voir que les anciens groupes sont derrière sur leurs compensations jusqu'à l'expiration de ces compensations.
En théorie, vous pourriez écrire une pierre tombale sur ce sujet manuellement (ce qui se passe pendant expiration du décalage ), mais je n'ai trouvé aucun outil qui facilite cela.
vous pouvez supprimer le groupe de kafka par CLI
kafka-consumer-groups --bootstrap-server localhost:9092 --delete --group group_name