Hadoop DNS 解析

Hadoop DNS Resolution

我正在尝试在 VM 上安装本地集群。当我打开 Cloudera Manager 时,有时主机健康检查显示失败并且错误消息基本上显示 "DNS resolution failed." 有时 HDFS 服务显示失败。我只是想在其他途径上提出一些想法来解决问题。我相当确定这是简单的主机文件或 DNS 的东西。我的 OS 是 Ubuntu.

到目前为止,我已经编辑了 /etc/hosts 以获得我从 运行 ifconfig

获得的确切 ipv4 地址
10.2.0.15  michael-VirtualBox

我删除了条目

127.0.0.1 localhost

我也重新启动了网络服务。我执行了命令

"python -c "import socket; print socket.getfqdn(); print socket.gethostbyname(socket.getfqdn())""

我回来了

127.0.0.1 localhost

hadoop 严重依赖于能够执行主机名的正向和反向查找:

  • 将主机名解析为 IP(正向查找 - DNS A 记录)
  • 将 IP 解析为主机名(反向查找 - DNS PTR 记录)

对于本地安装,我建议使用 /etc/hosts,因为该文件中的条目为每个条目提供了正向和反向查找。集群中的所有节点必须能够解析集群中所有其他服务器的主机名,因此每个服务器上的 /etc/hosts 文件必须包含集群中每个 Vbox VM 的所有 IP -> 主机名条目。

hadoop 看到的主机名是服务器上 hostname --fqdn 的输出。因此,您的 /etc/hosts 文件应包含 hostnamehostname --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