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
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 .
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:
Si non:
$KAFKA_DIR/bin/kafka-create-topic.sh
. Regardez à l'intérieur du script pour les détails d'utilisation.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.
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.
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.