我正在使用 Ubuntu 12.04 LTS 在 4 节点集群上安装 CDH4。我能够安装 cloudera manager 并在主机上启动一个单节点集群。但是,一旦我添加了一个新主机,CM 就会说它的健康状况不佳并引发以下错误:
“从 Java 进程检查时,此主机的主机名和规范名称不一致。”
我修改了主服务器和所有主机上的 /etc/hosts 的内容,以包括 IP 地址和每台机器的 FQDN。我是否还需要设置一个 dns 服务器来完成这项工作?
我正在使用 Ubuntu 12.04 LTS 在 4 节点集群上安装 CDH4。我能够安装 cloudera manager 并在主机上启动一个单节点集群。但是,一旦我添加了一个新主机,CM 就会说它的健康状况不佳并引发以下错误:
“从 Java 进程检查时,此主机的主机名和规范名称不一致。”
我修改了主服务器和所有主机上的 /etc/hosts 的内容,以包括 IP 地址和每台机器的 FQDN。我是否还需要设置一个 dns 服务器来完成这项工作?
您不一定需要设置 DNS 服务器才能使其正常工作,但正向和反向 DNS 必须明确匹配,Hadoop 才能正常运行。
Hadoop Operations 这本书有一个很好的例子,说明如何编写一个简单的 Java 程序来验证你的正向 + 反向 DNS 是否排列整齐。当然,您可以进一步检测该程序以帮助您在它们未对齐的情况下进行调试。
如果您必须解决这个问题,很可能需要主机条目、NIC 配置和/或托管名称服务器中的记录的组合。
我有同样的问题,我通过应用以下内容来解决它......
运行此命令检查主机的 fqdn
python -c "import socket; print socket.getfqdn(); print socket.gethostbyname(socket.getfqdn())"
ip-172-*-*-*.eu-central-1.compute.internal -> "this cause the issue"
172.*.*.*
只需您可以在 route53 中创建主机的 cname,就像我们在 linux 中的 hosts 文件中创建别名一样
172.*.*.* host1-production.com ip-172-*-*-*.eu-central-1.compute.internal
然后重启cloudera-scm代理服务
注意:在我的情况下,我使用 hosts 文件来解析自己的 IP 地址,并且我在 nsswitch.conf 文件中设置了 hosts: files dns。主机的其余部分由 aws route53 解析。
祝你们好运