问题描述

kafka producer/consumer连接kafka broker超时,报错日志:

org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

解决办法

假如:kafka broker部署在172.17.162.198(主机名为myhost01)机器。

方式1:修改producer/consumer本机的hosts文件,添加broker机器的host配置。

在/etc/hosts(linux)文件下,添加配置:

172.17.162.198 myhost01

方式2:修改kafka broker配置文件,设置advertised.listeners属性。(推荐)

在~/kafka/config/server.properties中,修改配置:

advertised.listeners=PLAINTEXT://172.17.162.198:9092

问题原因

如果kafka broker没有设置advertised.listeners属性,则默认将broker主机名发布到zookeeper。当kafka客户端(producer/consumer)连接到kafka集群之后,虽然刚开始通过ip直连broker成功,但是之后会更新为zookeeper中存储的meta元信息(为hostname主机名),所以通过hostname主机名称来连接会报错TimeoutException超时。

Logo

大数据从业者之家,一起探索大数据的无限可能!

更多推荐