Проблема перебалансировки при чтении сообщений в Kafka
Я пытаюсь читать сообщения на тему Кафки, но я не могу прочитать его. Процесс убивается через некоторое время, не читая никаких сообщений.
вот ошибка перебалансировки, которую я получаю:
[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
Я пытался бежать ConsumerOffsetChecker
, и это ошибка, которую я получаю. Я понятия не имею, как это решить. Кто-нибудь, какие-нибудь идеи?
./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.apply$mcVI$sp(ConsumerOffsetChecker.scala:89)
at kafka.tools.ConsumerOffsetChecker$$anonfun$kafka$tools$ConsumerOffsetChecker$$processTopic.apply(ConsumerOffsetChecker.scala:89)
at kafka.tools.ConsumerOffsetChecker$$anonfun$kafka$tools$ConsumerOffsetChecker$$processTopic.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.apply(ConsumerOffsetChecker.scala:153)
at kafka.tools.ConsumerOffsetChecker$$anonfun$main.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.call(ZkClient.java:770)
at org.I0Itec.zkclient.ZkClient.call(ZkClient.java:766)
at org.I0Itec.zkclient.ZkClient.retryUntilConnected(ZkClient.java:675)
... 16 more
5 ответов
недавно у меня были похожие проблемы. Вы можете попытаться увеличить потребительские конфигурации перебалансировка.отступление.ms и zookeeper.сеанс.тайм-аут.ms до около 5-10 секунд.
первый параметр говорит Кафке подождать больше, прежде чем повторять попытку перебалансировки. Второй говорит Кафке быть более терпеливым, пытаясь связаться с zookeeper.
другие параметры конфигурации можно найти на официальная документация.
Это, вероятно, означает, что брокеры не создали эти узлы правильно при подключении к Zookeeper. Путь / consumer должен существовать при попытке потребления.
вот несколько путей для отладки:
вы создали какие-либо темы?
Если так:
- сколько разделов есть в теме?
- вы проверили, что метаданные темы были правильно заполнены в zookeeper?
- можем ли мы видеть Ваша потребительская конфигурация?
если нет:
- затем вам нужно создать тему с помощью скрипта
$KAFKA_DIR/bin/kafka-create-topic.sh
. Посмотрите внутри сценария для деталей использования. - как только вы создадите тему, вам нужно создать потребителя с идентификатором группы, который ранее не использовался, иначе вы не начнете заново.
в Кафке есть ошибка.инструменты.ConsumerOffsetChecker. Если конкретный узел Zookeeper, содержащий информацию о потребленном смещении, не выходит, инструмент завершает выбрасывание execption.
например, предположим, что у вас есть потребительская группа " mygroup "и тема"topictest". Затем смещение для раздела 2 сохраняется в Znode: / потребители / mygroup / смещения / topictest / 2.
Если нет записи для раздела 2 темы topictest в Znode, то потребитель offsetchecker инструмент выйдет при проверке смещения для раздела 2. В принципе, он потерпит неудачу при проверке первого раздела "n", для которого Znode /consumers/mygroup/offsets/topictest/n отсутствует в Zookeeper.
вероятно, ваши брокеры находятся в автономном режиме, и они не могут подключиться к Zookeeper, вы пробовали запустить скрипт console-consumer, доступный в $KAFKA_ROOT_DIR/bin
путь для проверки, можете ли вы потреблять из определенной темы.
другая проблема может быть из-за конфликтов jar. Если у вас есть тот же jar с разными версиями, хранящимися в папке библиотеки. Этот вопрос может возникнуть. банки типа scala-library, zkclient, zookeeper, kafka-client не должны дублироваться с разными версиями.