我正在尝试在虚拟机上安装本地集群。当我打开 Cloudera Manager 时,有时主机运行状况检查显示失败并且错误消息基本上是“DNS 解析失败”。有时 HDFS 服务显示失败。我只是想在其他途径上提出一些想法来解决问题。我相当确定这是简单的主机文件或 DNS 的东西。我的操作系统是 Ubuntu。
到目前为止,我已经编辑/etc/hosts 以获得我通过运行 ifconfig 获得的确切 ipv4 地址
10.2.0.15 michael-VirtualBox
我删除了条目
127.0.0.1 本地主机
我还重新启动了网络服务。我执行了命令
“python -c”导入套接字;打印 socket.getfqdn();打印 socket.gethostbyname(socket.getfqdn())""
我回来了
127.0.0.1
本地主机
最佳答案
hadoop 严重依赖于能够执行主机名的正向和反向查找:
- 将主机名解析为 IP(正向查找 - DNS A 记录)
- 将 IP 解析为主机名(反向查找 - DNS PTR 记录)
对于本地安装,我建议使用 /etc/hosts
,因为该文件中的条目为每个条目提供正向和反向查找。集群中的所有节点必须能够解析集群中所有其他服务器的主机名,因此每台服务器上的 /etc/hosts
文件必须包含所有 IP -> 每个 Vbox VM 的主机名条目在你的集群中。
hadoop 看到的主机名是服务器上 hostname --fqdn
的输出。因此,您的 /etc/hosts
文件应该包括 hostname
和 hostname --fqdn
的输出,例如
127.0.0.1 localhost
10.2.0.15 server1 server1.example.com
10.2.0.16 server2 server2.example.com
10.2.0.17 server3 server3.example.com
10.2.0.18 server4 server4.example.com
我假设您正在为每个节点使用 host-only
网络配置,并且所有节点都可以相互访问。
如果您使用的是 cloudera,请务必在对 /etc/hosts
进行更改后重新启动 cloudera-scm-agent
关于Hadoop DNS 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35472852/