我在虚拟机中有一个ubuntu服务器虚拟机(在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地址来设置名称节点和从属。以下是我的奴隶文件:
172.17.0.4
172.17.0.6
在google和stackoverflow上搜索后,没有解决方案可以解决我的问题。但是我想Hadoop Namenode将172.17.0.4视为“主机名”,因此它报告“主机名无法解析”,其中“hostname = 172.17.0.4”。 有什么建议吗?
答案 0 :(得分:0)
最后我得到了一个解决方案,这证明了我的假设:
1.按照来自https://askubuntu.com/questions/472412/how-do-i-upgrade-docker的说明将我的泊坞机升级到1.4.1。
2.write IP => master和slave的hostname映射到/ etc / hosts
3.在Hadoop从属文件中使用主机名而不是ip地址。
4。"运行./sbin/start-dfs.sh"
5.Done!