问题:
没有配置hosts文件,不能向hadoop集群的kafka发送数据
原因:
1.阿里云服务器返回的是内网IP
解决:
1.检查阿里云服务器的防火墙,及访问策略。释放相关端口,否则将访问不到服务。
2.要配置vi /etc/hosts
外网ip : 主机名
比如 114.113.112.111 :kafka-test
3.配hosts文件映射公网
4.修改kafka/config/server.properties(将内网IP映射成外网ip)
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0
port=9092
host.name=阿里云内网地址
advertised.host.name=阿里云外网映射地址
注意:版本不同此处的配置也不尽相同。有的版本需要的配置如下
broker.id=0
port=9092
listeners=PLAINTEXT://:9092 (这个才是真正绑定的ip,写内网ip即可)
advertised.listeners=PLAINTEXT://your.host.name:9092 (要暴露给外部访问的ip,写外网ip)
至此,重启kafka即可。
小提示:
如果在使用过的过程中遇见
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
一定要检查listeners的配置
将kafka的config/server.properties文件中的listeners配置成下方,
listeners=PLAINTEXT://你的ip地址:9092
的listeners配置成下方,
listeners=PLAINTEXT://你的ip地址:9092
不要用localhost,或者127.0.0.1