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