web-dev-qa-db-fra.com

Rééquilibrage du problème lors de la lecture de messages dans Kafka

J'essaie de lire des messages sur le sujet de Kafka, mais je suis incapable de le lire. Le processus est tué après un certain temps, sans lire aucun message.

Voici l'erreur de rééquilibrage que j'obtiens:

[2014-03-21 10:10:53,215] ERROR Error processing message, stopping consumer:  (kafka.consumer.ConsoleConsumer$)
kafka.common.ConsumerRebalanceFailedException: topic-1395414642817-47bb4df2 can't rebalance after 4 retries
    at kafka.consumer.ZookeeperConsumerConnector$ZKRebalancerListener.syncedRebalance(ZookeeperConsumerConnector.scala:428)
    at kafka.consumer.ZookeeperConsumerConnector.kafka$consumer$ZookeeperConsumerConnector$$reinitializeConsumer(ZookeeperConsumerConnector.scala:718)
    at kafka.consumer.ZookeeperConsumerConnector$WildcardStreamsHandler.<init>(ZookeeperConsumerConnector.scala:752)
    at kafka.consumer.ZookeeperConsumerConnector.createMessageStreamsByFilter(ZookeeperConsumerConnector.scala:142)
    at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:196)
    at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
Consumed 0 messages

J'ai essayé d'exécuter ConsumerOffsetChecker, et c'est l'erreur que je reçois. Je ne sais absolument pas comment résoudre ce problème. Quelqu'un a une idée?

./kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zkconnect localhost:9092 --topic mytopic --group  topic_group
Group           Topic                          Pid Offset          logSize         Lag             Owner
Exception in thread "main" org.I0Itec.zkclient.exception.ZkNoNodeException: org.Apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /consumers/
        at org.I0Itec.zkclient.exception.ZkException.create(ZkException.Java:47)
        at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.Java:685)
        at org.I0Itec.zkclient.ZkClient.readData(ZkClient.Java:766)
        at org.I0Itec.zkclient.ZkClient.readData(ZkClient.Java:761)
        at kafka.utils.ZkUtils$.readData(ZkUtils.scala:459)
        at kafka.tools.ConsumerOffsetChecker$.kafka$tools$ConsumerOffsetChecker$$processPartition(ConsumerOffsetChecker.scala:59)
        at kafka.tools.ConsumerOffsetChecker$$anonfun$kafka$tools$ConsumerOffsetChecker$$processTopic$1.apply$mcVI$sp(ConsumerOffsetChecker.scala:89)
        at kafka.tools.ConsumerOffsetChecker$$anonfun$kafka$tools$ConsumerOffsetChecker$$processTopic$1.apply(ConsumerOffsetChecker.scala:89)
        at kafka.tools.ConsumerOffsetChecker$$anonfun$kafka$tools$ConsumerOffsetChecker$$processTopic$1.apply(ConsumerOffsetChecker.scala:89)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
        at scala.collection.immutable.List.foreach(List.scala:45)
        at kafka.tools.ConsumerOffsetChecker$.kafka$tools$ConsumerOffsetChecker$$processTopic(ConsumerOffsetChecker.scala:88)
        at kafka.tools.ConsumerOffsetChecker$$anonfun$main$3.apply(ConsumerOffsetChecker.scala:153)
        at kafka.tools.ConsumerOffsetChecker$$anonfun$main$3.apply(ConsumerOffsetChecker.scala:153)
        at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:61)
        at scala.collection.immutable.List.foreach(List.scala:45)
        at kafka.tools.ConsumerOffsetChecker$.main(ConsumerOffsetChecker.scala:152)
        at kafka.tools.ConsumerOffsetChecker.main(ConsumerOffsetChecker.scala)
Caused by: org.Apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /consumers/
        at org.Apache.zookeeper.KeeperException.create(KeeperException.Java:102)
        at org.Apache.zookeeper.KeeperException.create(KeeperException.Java:42)
        at org.Apache.zookeeper.ZooKeeper.getData(ZooKeeper.Java:927)
        at org.Apache.zookeeper.ZooKeeper.getData(ZooKeeper.Java:956)
        at org.I0Itec.zkclient.ZkConnection.readData(ZkConnection.Java:103)
        at org.I0Itec.zkclient.ZkClient$9.call(ZkClient.Java:770)
        at org.I0Itec.zkclient.ZkClient$9.call(ZkClient.Java:766)
        at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.Java:675)
        ... 16 more
16
divinedragon

J'ai eu des problèmes similaires récemment. Vous pouvez essayer d'augmenter les configurations de consommateur rebalance.backoff.ms et zookeeper.session.timeout.ms à environ 5 à 10 secondes.

Le premier paramètre indique à kafka d'attendre davantage avant de réessayer de rééquilibrer ... Le deuxième paramètre indique à kafka d'être plus patient tout en essayant de se connecter au gardien de zoo.

Vous trouverez d'autres options de configuration sur la documentation officielle .

13
Minh-Triet LÊ

Cela signifie probablement que les courtiers n'ont pas créé correctement ces nœuds lors de la connexion à Zookeeper. Le chemin/consommateur doit exister lorsque vous essayez de consommer. 

Voici quelques chemins pour le débogage:

Avez-vous créé des sujets? 

Si c'est le cas:

  1. Combien de partitions y a-t-il dans le sujet?
  2. Avez-vous vérifié que les métadonnées de sujet étaient correctement renseignées dans le gardien de zoo?
  3. Peut-on voir votre configuration consommateur?

Si non:

  1. Ensuite, vous devez créer un sujet en utilisant le script $KAFKA_DIR/bin/kafka-create-topic.sh. Regardez à l'intérieur du script pour les détails d'utilisation.
  2. Une fois que vous avez créé un sujet, vous devez créer un consommateur avec un ID de groupe qui n’a pas été utilisé auparavant, sinon vous ne commencerez pas à zéro.
2
laughing_man

Il y a un bogue dans kafka.tools.ConsumerOffsetChecker. Si le nœud Zookeeper contenant des informations de décalage consommées ne se ferme pas, l'outil quitte en exécutant l'exécution.

Par exemple, supposons que vous ayez un groupe de consommateurs "mygroup" et un sujet "topictest". Ensuite, le décalage pour la partition 2 est maintenu dans Znode: /Consommateurs/mon groupe/offsets/topictest/2. 

S'il n'y a pas d'entrée pour la partition 2 de la rubrique topictest dans Znode, alors l'outil offsetchecker de consommateur se ferme lors de la vérification du décalage pour la partition 2 . mygroup/offsets/topictest/n est manquant sur Zookeeper.

1
Nipun Talukdar

Un autre problème peut être dû aux conflits de jar. Si vous avez le même fichier jar avec des versions différentes stockées dans le dossier de la bibliothèque. Ce problème peut survenir . Des jars comme scala-library, zkclient, zookeeper, kafka-client ne doivent pas être dupliqués avec des versions différentes.

0
charan teja

probablement vos courtiers sont hors ligne et qu'ils ne peuvent pas se connecter à Zookeeper, avez-vous essayé d'exécuter le script console-consommateur disponible dans le chemin $KAFKA_ROOT_DIR/bin pour vérifier si vous pouvez utiliser un sujet spécifique.

0
user2720864