web-dev-qa-db-fra.com

Kafka 0.11 comment réinitialiser les compensations

J'essaie de réinitialiser le décalage client avec les derniers outils CLI pour Kafka.

kafka-consumer-groups.bat --bootstrap-server kafka-Host:9092 --group my-group --reset-offsets --to-earliest --all-topics

En conséquence, je vois cette sortie:

TOPIC                            PARTITION  NEW-OFFSET
FirstTopic                       0          0
SecondTopic                      0          0

Mais relancez la commande:

kafka-consumer-groups.bat --bootstrap-server kafka-Host:9092 --group my-group --describe

résultats en sortie:

Consumer group 'my-group' has no active members.

TOPIC              PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
FirstTopic         0          1230            1230            0  
SecondTopic        0          1022            1022            0

J'ai essayé d'autres options telles que la réinitialisation du décalage explicite ou la spécification directe du sujet, mais le résultat est identique. La sortie suggère que l'opération réussit lors de la vérification des décalages avec la commande describe ou du débogage indique que le décalage n'a pas été modifié.

Quiconque réussit à réinitialiser la compensation de consommation au sein de courtiers non-zookeepers.

29
Ciapeczka

Par défaut, --reset-offsets imprime simplement le résultat de l'opération. Pour effectuer l'opération, vous devez ajouter --execute à votre commande:

kafka-consumer-groups.bat --bootstrap-server kafka-Host:9092 --group
my-group --reset-offsets --to-earliest --all-topics --execute
53
Mickael Maison

Bien que la réponse acceptée réponde parfaitement à la question OP, il existe plus de paramètres disponibles pour réinitialiser les décalages. Donc, en ajoutant cette réponse pour étendre la réponse acceptée.

Pour réinitialiser le décalage de tous les sujets au plus tôt dans le groupe de consommateurs

kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
    <group_name> --reset-offsets --to-earliest --all-topics --execute

Pour réinitialiser le décalage d'un sujet spécifique au plus tôt dans le groupe de consommateurs

kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
    <group_name> --reset-offsets --to-earliest --topic <my-topic> --execute

Pour réinitialiser le décalage d'un sujet spécifique sur un décalage spécifique dans le groupe de consommateurs

kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
    <group_name> --reset-offsets --to-offset 1000 --topic <my-topic> --execute

Autres arguments supportés:

- shift-by [entier positif ou négatif] - Décale le décalage en avant ou en arrière par rapport à un entier donné.

- to-current et - to-latest sont identiques à - to-offset et - to-earlyestest.

- to-datetime [Le format de date/heure est aaaa-MM-jjTHH: mm: ss.xxx]

kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
    <group_name> --reset-offsets --to-datetime 2017-08-04T00:00:00.000 [ --all-topics or --topic <topic-name> ] --execute

- by-duration [Le format est PnDTnHnMnS]

kafka-consumer-groups.sh --bootstrap-server <kafka_broker_Host:9091> --group
    <group_name> --reset-offsets --by-duration PT0H10M0S [ --all-topics or --topic <topic-name> ] --execute

Réinitialiser pour compenser par la durée de l'horodatage actuel.

comment valider?

Utilisez la commande ci-dessous pour vérifier le décalage actuel/à la fin des décalages et pour confirmer la réinitialisation effectuée.

kafka-consumer-groups.sh --bootstrap-server <kafka_Host:port> --group <group_id> --describe

Exemple de sortie:

Consumer group 'group1' has no active members.

TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     Host            CLIENT-ID
intro           0          0               99              99              -               -               -

Erreurs possibles:

Erreur: Les assignations ne peuvent être réinitialisées que si le groupe '[nom du groupe]' est inactif, mais que l'état actuel est Stable.

"Stable" signifie qu'il y a un consommateur actif en cours d'exécution pour ce groupe. Donc, vous devez d’abord arrêter le ou les consommateurs actifs et réessayer de réinitialiser les décalages.

Il est impossible de réinitialiser les décalages s’il existe un consommateur actif pour le groupe de consommateurs.

3
Arun211