未知的例外Kafka

hfyxw5xn  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(298)

我正在尝试设置一个kafka集群(实际上是集群中的第一个节点)。
我有一个单节点zookeeper集群设置。我在另一个节点上设置Kafka。
两者都运行centos6.4,运行ipv6,这有点像pita。我验证了机器可以使用netcat相互通信。
当我启动kafka时,我得到以下异常(导致kafka关闭)。编辑:我让Kafka开始,我必须设置 host.name 属性。
我能够创建一个测试主题并从kafka服务器发送消息。
但是,我在尝试使用消息时也会遇到相同的错误。
有什么帮助和建议吗?

bin/kafka-console-consumer.sh --zookeeper zk1:2181 --topic test --from-beginning
Exception in thread "main" java.net.UnknownHostException: kafka: kafka: Name or service not known
    at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:107)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:128)
    at kafka.consumer.Consumer$.create(ConsumerConnector.scala:89)
    at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:178)
    at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
Caused by: java.net.UnknownHostException: kafka: Name or service not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
    at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
    ... 5 more
bqucvtff

bqucvtff1#

当你跑的时候 > bin/kafka-console-consumer.sh 命令Kafka加载 ConsoleConsumer ,它将尝试创建具有自动生成的使用者id的使用者。kafka生成使用者id的方法是将本地主机的名称连接到它。因此,问题的关键在于java无法解析我正在使用的开放堆栈vm上本地主机的ip地址。
所以答案是open stack vm正在将本地主机名解析为 kafka ,这是vm的名称。我在Kafka和zookeeper的例子里都有设置 kafka1 .
所以,当java调用getlocalhost时,它试图找到 kafka ,而我的/etc/hosts文件中没有。
我只是添加了一个条目 kafka 在我的/etc/hosts文件中,一切都开始工作得很好!!!
我本以为它会决定 localhost ,但它没有,它解析为vm的名称, kafka .

f4t66c6m

f4t66c6m2#

正如noplay指出的问题是kafka无法解析正确的ip,例如,在没有分配公共ip的私有子网中运行的ec2示例上可能会发生这种情况。解决方案总结如下:

hostname

它会显示主机名,类似ip-10-180-128-217。然后只需更新/etc/hosts

sudo nano /etc/hosts

编辑,例如。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ip-10-180-128-217

相关问题