Hadoop slaves 文件将 IP 作为主机名?

Hadoop slaves file regard IP as hostname?

我在虚拟框中有一个 ubuntu 服务器 VM(在 Mac OSX 中)。我通过 docker 配置了一个 Hadoop 集群:1 个主节点(172.17.0.3),2 个从节点(172.17.0.4、172.17.0.6)。在 Hadoop 主文件夹下 运行 "./sbin/start-dfs.sh" 之后,我在 datanode 机器中发现以下错误:

Datanode denied communication with namenode because hostname cannot be 
resolved (ip=172.17.0.4, hostname=172.17.0.4): DatanodeRegistration(0.0.0.0, 
datanodeUuid=4c613e35-35b8-41c1-a027-28589e007e78, infoPort=50075, 
ipcPort=50020, storageInfo=lv=-55;cid=CID-9bac5643-1f9f-4bc0-abba-
34dba4ddaff6;nsid=1748115706;c=0)

因为docker不支持双向名称链接,而且我的docker版本不允许编辑/etc/hosts文件,所以我使用IP地址来设置name node和slaves .以下是我的奴隶档案:

172.17.0.4
172.17.0.6

在 google 和 Whosebug 上搜索后,没有解决方案适用于我的问题。但是我猜想 Hadoop Namenode 将 172.17.0.4 视为 "hostname",因此它报告 "hostname can not be resolved" 其中 "hostname=172.17.0.4"。 有什么建议吗?

终于找到了解决方案,证明了我的想法:

1.upgrade 我的 docker 到 1.4.1,遵循以下说明:https://askubuntu.com/questions/472412/how-do-i-upgrade-docker.

2.write IP=>master和slave的主机名映射到/etc/hosts

3.use Hadoop 从属文件中的主机名而不是 ip 地址。

4."run ./sbin/start-dfs.sh"

5.Done!