problema:
Hay un error al producir datos para el corredor de kafka mediante el nombre de host abreviado, el nombre de host completo y la IP del host. Los errores específicos son los siguientes:
- Error 1
[root @ localhost] # ./bin/kafka-console-producer.sh --broker-list node01: 9092 --topic test_topic
[2020-12-1 16: 25: 33,972] WARN Eliminando server node01: 9092 de bootstrap. servidores porque la resolución de DNS falló para node01 (org.apache.kafka.clients.ClientUtils)
org.apache.kafka.common.KafkaException: no se pudo construir kafka producer
en org.apache.kafka.clients.producer.KafkaProducer. <init> ( KafkaProducer.java:415)
en org.apache.kafka.clients.producer.KafkaProducer. <init> (KafkaProducer.java:287)
en kafka.producer.NewShinyProducer. <init> (BaseProducer.scala: 40)
en kafka.tools .ConsoleProducer $ .main (ConsoleProducer.scala: 48)
en kafka.tools.ConsoleProducer.main (ConsoleProducer.scala)
Causado por: org.apache.kafka.common.config.ConfigException: No hay URL de arranque que se
puedan resolver en bootstrap.servers en org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses (ClientUtils.java:64)
en org.apache.kafka. clients.producer.KafkaProducer. <init> (KafkaProducer.java:372)
... 4 más
- Error 2
[root @ localhost] # ./bin/kafka-console-producer.sh --broker-list node01.example.com:9092 --topic test_topic
[2020-12-1 16: 27: 59,444] WARN Eliminando servidor node01. example.com:9092 de bootstrap.servers porque la resolución de DNS falló para node01.example.com (org.apache.kafka.clients.ClientUtils)
org.apache.kafka.common.KafkaException: no se pudo construir el productor kafka
en org.apache. kafka.clients.producer.KafkaProducer. <init> (KafkaProducer.java:415)
en org.apache.kafka.clients.producer.KafkaProducer. <init> (KafkaProducer.java:287)
en kafka.producer.NewShinyProducer. <init > (BaseProducer.scala: 40)
en kafka.tools.ConsoleProducer $ .main (ConsoleProducer.scala: 48)
en kafka.tools.ConsoleProducer.main (ConsoleProducer.scala)
Causado por: org.apache.kafka.common.config.ConfigException: No hay URL de arranque que se puedan resolver en bootstrap.servers
en org.apache.kafka.clients.ClientUtils.parseAndValidateAddresses ( ClientUtils.java:64)
en org.apache.kafka.clients.producer.KafkaProducer. <init> (KafkaProducer.java:372)
... 4 más
- Error 3
[root @ localhost] # ./bin/kafka-console-producer.sh --broker-list 192.168.1.1:9092 --topic test_topic
> hello world
> [2020-12-1 16: 12: 24,583] ERROR Error cuando enviando mensaje al tema test_topic con clave: nulo, valor: 11 bytes con error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expirando 1 registro (s) para test_topic-0: han pasado 40094 ms desde la creación del lote más tiempo de espera
la razón:
Este problema se debe principalmente a que el cliente de Kafka no puede conectarse al nodo intermediario de Kafka.
El error 1 y el error 2 se deben a que la máquina no puede resolver el nombre de host abreviado y el nombre de host completo. Debe configurar el archivo / etc / hosts y agregar la dirección IP correspondiente al nombre de host abreviado y el nombre de host completo al archivo de hosts.
El error 3 se debe a que la IP y el nombre de host del nodo del broker de kafka no se agregaron al archivo / etc / hosts, y la dirección IP correspondiente al nombre de host del broker de kafka debe agregarse al archivo de hosts.
De hecho, la razón del problema anterior es que el cliente kafka solicita kafka, y kafka devuelve al cliente el nombre de host en lugar de la IP. Si el host del cliente no está equipado con hosts, el nombre de host no se puede resolver y la carga el mensaje falla.
resolver:
Método 1: modificar los hosts del host del cliente
Abra el archivo / etc / hosts y agregue el siguiente contenido:
192.168.1.1 node01 node01.example.com
192.168.1.2 node02 node02.example.com
192.168.1.3 node03 node03.example.com
Método 2: modificar la configuración de Kafka
Modifique el archivo server.properties y establezca el campo advertised.host.name en la ip del intermediario
advertised.host.name = 192.168.0.1,192.168.0.2,192.168.0.3
Nota:
El nombre de host en hosts debe incluir el nombre de host del agente de Kafka, aquí es node01.example.com, node02.example.com, node03.example.com; de lo contrario, Kafka no se puede usar normalmente.
referencia:
1. https://www.cnblogs.com/snifferhu/p/5102629.html
2. https://blog.csdn.net/u013686990/article/details/103026842