首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UnknownHostException kafka

UnknownHostException kafka
EN

Stack Overflow用户
提问于 2014-08-26 10:52:58
回答 2查看 24.7K关注 0票数 18

我正在尝试设置一个Kafka集群(实际上是集群中的第一个节点)。

我有一个单节点zookeeper集群设置。我在一个单独的节点上设置kafka。

两者都运行CentOS 6.4,运行IPV6,这有点像PITA。我验证了这两台机器可以使用netcat相互通信。

当我启动kafka时,我得到了以下异常(导致kafka关闭)。编辑:我启动了kafka,我必须在server.config文件中设置host.name属性。

我能够创建一个测试主题,并从kafka服务器上发送消息。

但是,在尝试使用消息时,我得到了相同的错误。

有什么帮助和建议吗?

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-27 01:04:13

当您运行> bin/kafka-console-consumer.sh命令时,kafka加载一个ConsoleConsumer,它将尝试创建一个具有自动生成的消费者id的消费者。Kafka生成消费者id的方式是将本地主机的名称连接到它。因此,问题在于java无法解析我正在使用的Open Stack VM上本地主机的ip地址。

因此,答案是Open Stack VM将本地主机名解析为kafka,这是VM的名称。我在Kafka和Zookeeper实例中将所有内容都设置为kafka1

所以,当java调用getLocalHost时,它试图找到kafka的IP地址,而我在//文件中没有这个地址。

我只是在我的/etc/ kafka文件中添加了一个主机条目,一切都开始正常工作了!

我本以为它会解析为localhost,但它没有,它解析为vm的名称kafka

票数 26
EN

Stack Overflow用户

发布于 2018-01-10 17:34:10

正如noplay指出的那样,问题是Kafka无法解析正确的IP,例如,在没有分配公网IP的情况下,在私有子网中运行的EC2实例可能会发生这种情况。解决方案总结如下:

代码语言:javascript
运行
复制
hostname

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

代码语言:javascript
运行
复制
sudo nano /etc/hosts

编辑,例如

代码语言:javascript
运行
复制
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ip-10-180-128-217
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25497279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档