ERROR Ошибка при отправке сообщения в тему
При создании сообщения в kafka я получаю следующую ошибку:
$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic nil_PF1_P1
hi
hello
[2016-07-19 17:06:34,542] ERROR Error when sending message to topic nil_PF1_P1 with key: null, value: 2 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
[2016-07-19 17:07:34,544] ERROR Error when sending message to topic nil_PF1_P1 with key: null, value: 5 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
$ bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic nil_PF1_P1
Topic:nil_PF1_P1 PartitionCount:1 ReplicationFactor:1 Configs:
Topic: nil_PF1_P1 Partition: 0 Leader: 2 Replicas: 2 Isr: 2
Любая идея по этому поводу?
Ответы
Ответ 1
Вместо изменения server.properties включает в себя 0.0.0.0 в самом коде. Это решило проблему для меня.
Вместо
/usr/bin/kafka-console-producer --broker-list Hostname:9092 --topic MyFirstTopic1
Использование:
/usr/bin/kafka-console-producer --broker-list 0.0.0.0:9092 --topic MyFirstTopic1
Ответ 2
Если вы используете кластер hortonworks, проверьте порт прослушивания в ambari.
В моем случае 9092 не был моим портом. Я пошел в ambari и обнаружил, что для порта для прослушивания установлено 6667
это сработало для меня. :)
Ответ 3
Это может быть из-за некоторых параметров из файла kafka server.properties.
Следующее решение сработало для меня. Вы можете найти дополнительную информацию здесь
1) остановите сервер kakfka.
$cd $KAFKA_HOME/bin
$./kafka-server-stop.sh
2) Изменено
listeners = PLAINTEXT://имя хоста: 9092
to
listeners = PLAINTEXT://0.0.0.0: 9092
из
$KAFKA_HOME/config/server.properties`
файл.
3) перезапустите сервер kafka.
$KAFKA_HOME/bin/kafka-server-start.sh/kafka/config/server.properties
Ответ 4
Сегодня я получаю ту же ошибку с confluent_kafka 0.9.2 (0x90200)
и librdkafka 0.9.2 (0x90401)
. В моем случае я указал неверный порт брокера в tutorialpoints пример:
$ kafka-console-producer.sh --broker-list localhost:9092 --topic tutorialpoint-basic-ops-01
хотя мой брокер был запущен на порту 9094:
$ cat server-02.properties
broker.id=2
port=9094
log.dirs=/tmp/kafka-example-logs-02
zookeeper.connect=localhost:2181
Хотя порт 9092 не был открыт (netstat -tunap
), для повышения ошибки потребовалось 60 секунд для kafka-console-producer.sh
. Похоже, этот инструмент нуждается в исправлении:
- сбой быстрее
- с более явным сообщением об ошибке.
Ответ 5
Если бы эта проблема:
Использование Hortonworks HDP 2.5.
Включена Kerberisation
Исправлено путем предоставления правильного протокола безопасности и портов.
Примеры команд:
./kafka-console-producer.sh --broker-list sand01.intranet:6667, san02.intranet:6667, san03.intranet:6667--topic test--security-protocol PLAINTEXTSASL
./kafka-console-consumer.sh --zookeeper sand01:2181 --topic test--from-beginning --security-protocol PLAINTEXTSASL
Ответ 6
В моем случае я использую доккер Kafka с Openshift. У меня была такая же проблема. Он был исправлен, когда я передал переменную окружения KAFKA_LISTENERS
со значением PLAINTEXT://:9092
. В итоге это добавит запись listeners=PLAINTEXT://:9092
в файл server.properties.
У слушателей не должно быть имени хоста.
Ответ 7
Я столкнулся с вышеупомянутым исключением stacktrace. Я исследовал и нашел основную причину. Я столкнулся с этим, когда я создал кластер Kafka с двумя узлами. Имея следующие настройки в server.properties.Here я указываю server.properties из kafka node 1 и 2 как broker1.properties и broker2.properties
Настройки broker1.properties
listeners=PLAINTEXT://A.B.C.D:9092
zookeeper.connect=A.B.C.D:2181,E.F.G.H:2181
Настройки broker2.properties
listeners=PLAINTEXT://E.F.G.H:9092
zookeeper.connect=A.B.C.D:2181,E.F.G.H:2181
Я пытался запустить производителя с узла1 или из узла2, используя следующую команду:
. /bin/kafka -console-producer.sh --broker-list localhost: 9092 --topic OUR_TOPIC
и я получал вышеупомянутый тайм-аут stacktrace, хотя Kafka работает на обеих машинах.
Хотя продюсер запускается либо из Leader node, либо из последователя, я всегда получал то же самое.
При использовании команды ниже у любого брокера я смог получить сообщение производителя.
./bin/kafka-console-producer.sh --broker-list A.B.C.D:9092 --topic OUR_TOPIC
or
./bin/kafka-console-producer.sh --broker-list E.F.G.H:9092 --topic OUR_TOPIC
or
./bin/kafka-console-producer.sh --broker-list A.B.C.D:9092,E.F.G.H:9092 --topic OUR_TOPIC
Таким образом, основная причина заключается в том, что брокер Kafka внутренне использует функции listeners = PLAINTEXT://EFGH: 9092, глядя на производителя. Это свойство должно совпадать, чтобы запустить брокера kafka из любого из node при запуске производителя. это свойство для слушателей = PLAINTEXT://localhost: 9092 будет работать для нашей самой первой команды.
Ответ 8
Я знаю, что это устарело, но это может работать для кого-то, кто имеет дело с этим:
Я изменил 2 вещи:
1. измените свойство "bootstrap.servers" или параметр -broker-list на 0.0.0.0:9092
2. измените (раскомментируйте и отредактируйте в моем случае) server.properties в 2 свойствах
- listeners = PLAINTEXT://your.host.name: 9092 to listeners = PLAINTEXT://: 909 2
- advertised.listeners = PLAINTEXT://your.host.name: 9092 to рекламируемые .listeners = PLAINTEXT://localhost: 9092