当前位置: 首页>>技术教程>>正文


networking – Hadoop数据节点找不到NameNode

, , ,

问题描述

我已经在VirtualBox中设置了一个分布式Hadoop环境:4个虚拟Ubuntu 11.10安装,其中一个充当主节点,其他三个充当从节点。我遵循this tutorial来启动并运行single-node版本,然后将其转换为fully-distributed版本。当我运行11.04时,它运行良好。但是,当我升级到11.10时,它崩溃了。现在我所有的奴隶的日志都显示以下错误消息,反复出现恶心:

INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 0 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 1 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 2 time(s).

等等。我在Internet(和StackOverflow)上发现了此错误消息的其他实例,但没有一种解决方案有效(尝试将core-site.xml和mapred-site.xml条目更改为IP地址而不是主机名;在所有从属服务器上将quadruple-checked./etc/hosts更改为IP地址和主机;主机可以将SSH password-less SSH到所有从机中)。我什至尝试将每个从属设备还原回single-node设置,并且在这种情况下它们都可以正常工作(注意,主设备始终可以作为Datanode和Namenode正常工作)。

我发现的唯一症状似乎是从任何一个奴隶那里得到的线索,当我尝试使用telnet 192.168.1.10 54310时,我得到Connection refused,这表明存在一些阻止访问的规则(升级到该规则时必须生效) 11.10)。

但是,我的/etc/hosts.allow尚未更改。我尝试了规则ALL: 192.168.1.,但是它没有改变行为。

哦,是的,主服务器上的netstat清楚地显示了TCP端口54310和54311正在监听。

任何人有任何建议让从属Datanode识别Namenode?

编辑#1:在对nmap进行一些探索(请参阅此评论)时,我认为问题出在我的/etc/hosts文件中。这是为主虚拟机列出的内容:

127.0.0.1    localhost
127.0.1.1    master
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
192.168.1.13 slave3

对于每个从属VM:

127.0.0.1    localhost
127.0.1.1    slaveX
192.168.1.10 master
192.168.1.1X slaveX

不幸的是,我不确定自己做了什么更改,但是NameNode现在总是死于尝试绑定“已在使用中”的端口(127.0.1.1:54310)。显然我的主机名和IP地址有问题,但是我真的不确定这是什么。有什么想法吗?

最佳方法

我找到了!通过注释掉/etc/hosts文件的第二行(带有127.0.1.1条目的第二行),netstat显示绑定到192.168.1.10地址而不是本地地址的NameNode端口,并且从VM找到了它。啊啊啊啊啊。谜团已揭开!感谢大家的帮助。

次佳方法

这个解决方案对我有用。即确保您在core-site.xml和mapred-site.xml中的属性中使用的名称:

<property>
   <name>fs.default.name</name>
   <value>hdfs://master:54310</value>
   <final>true</final>
 </property>

即master在/etc /hosts中定义为主节点和从属节点上的xyz.xyz.xyz.xyz master。然后重新启动namenode并使用netstat -tuplen进行检查,并查看它是否已绑定到”external” IP地址

tcp        0      xyz.xyz.xyz.xyz:54310         0.0.0.0:*                   LISTEN      102        107203     - 

而不是本地IP 192.168.x.y或127.0.x.y

第三种方法

我也遇到了同样的麻烦。 @Magsol解决方案有效,但应注意,需要注释的条目是

127.0.1.1 masterxyz

在主机上,而不是从机上的127.0.1.1,尽管我也这样做。另外,您还需要stop-all.sh和start-all.sh作为Hadoop,这很明显。

重新启动hadoop之后,请在此处检查nodemaster:http://masterxyz:50030/jobtracker.jsp

并查看可用于作业的节点数。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8363.html,未经允许,请勿转载。