Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking Hadoop Datanodes找不到NameNode_Networking_Ubuntu_Hadoop_Port - Fatal编程技术网

Networking Hadoop Datanodes找不到NameNode

Networking Hadoop Datanodes找不到NameNode,networking,ubuntu,hadoop,port,Networking,Ubuntu,Hadoop,Port,我在VirtualBox中设置了一个分布式Hadoop环境:4个虚拟Ubuntu 11.10安装,一个作为主节点,另三个作为从节点。我随后启动并运行了单节点版本,然后转换为完全分布式版本。当我运行11.04时,它运行得很好;然而,当我升级到11.10时,它坏了。现在,我的所有从属服务器的日志都显示以下错误消息,重复出现: INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310

我在VirtualBox中设置了一个分布式Hadoop环境:4个虚拟Ubuntu 11.10安装,一个作为主节点,另三个作为从节点。我随后启动并运行了单节点版本,然后转换为完全分布式版本。当我运行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(和)上发现了此错误消息的其他实例,但没有一个解决方案起作用(尝试将core-site.xml和mapred-site.xml条目更改为IP地址而不是主机名;在所有从机和主机上四重选中
/etc/hosts
;主机可以在所有从机中使用SSH密码)。我甚至尝试将每个从节点恢复为单个节点设置,在这种情况下它们都可以正常工作(注意,主节点作为Datanode和Namenode都可以正常工作)

我发现的唯一一个似乎能提供线索的症状是,当我尝试使用
telnet 192.168.1.10 54310
时,我发现
连接被拒绝,这表明有一些规则阻止了访问(当我升级到11.10时,这些规则一定已经生效)

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

哦,是的,主机上的
netstat
清楚地显示tcp端口54310和54311正在侦听

有人建议让从属数据节点识别Namenode吗?

编辑#1:在使用nmap进行一些探索(参见本文的评论)时,我认为问题出在我的
/etc/hosts
文件中。以下是主VM的列表:

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找到了它。啊。谜团解开了!谢谢大家的帮助。

我也遇到了同样的麻烦@Magsol解决方案可行,但应注意,需要注释掉的条目为

127.0.1.1 masterxyz

在主机上,而不是从机上的127.0.1.1,尽管我也这么做了。对于hadoop,您还需要stop-all.sh和start-all.sh,这可能很明显

重新启动hadoop后,请在此处检查nodemaster:


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

此解决方案对我有效。i、 e确保在core-site.xml和mapred-site.xml的属性中使用的名称:

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

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

虽然此响应不是作者要寻找的解决方案,但其他用户可能会在本页面上思考其他问题,因此,如果您使用AWS设置群集,则可能在AWS安全组页面中未启用ICMP安全规则。请看以下内容:


以上解决了从数据节点到主节点的连接问题。确保可以在每个实例之间ping。

我正在运行一个2节点群集

192.168.0.24主机
192.168.0.26工人2

在worker2机器日志中,我遇到了同样的问题,即重新尝试连接到服务器:master/192.168.0.24:54310。但是上面提到的人在运行这个命令时遇到了错误——telnet 192.168.0.24 54310。然而,在我的例子中,telnet命令运行良好。然后我检查了我的/etc/hosts文件

主/等/主机
127.0.0.1本地主机
192.168.0.24 ubuntu
192.168.0.24主机
192.168.0.26工人2

worker2/etc/hosts
127.0.0.1本地主机
192.168.0.26 ubuntu
192.168.0.24主机
192.168.0.26工人2

当我点击master时,我看到了活动节点:2。但当我点击它时,我只看到一个属于master的datanode。我检查了master和worker2上的JP。两台计算机上都在运行Datanode进程

经过几次尝试和错误之后,我意识到我的master和worker2机器的主机名都是“ubuntu”。我将worker2的主机名从“ubuntu”改为“worker2”,并从worker2机器上删除了“ubuntu”条目

注意:要更改主机名,请使用sudo编辑/etc/hostname


宾果!它起作用了:)我能够在dfshealth UI页面上看到两个数据节点(locahost:50070)

我也遇到了类似的问题。(我正在使用ubuntu 17.0) 我只在
/etc/hosts
文件中保留了主项和从项。(在主机器和从机器中)

其次,
>sudogedit/etc/hosts.allow
并添加条目:
ALL:192.168.201。

第三,使用
sudo ufw disable

最后,我从集群中的所有节点中删除了namenode和datanode文件夹,然后重新运行

$HADOOP_HOME/bin> hdfs namenode -format -force
$HADOOP_HOME/sbin> ./start-dfs.sh
$HADOOP_HOME/sbin> ./start-yarn.sh
从命令行检查运行状况报告(我建议这样做)


我让所有的节点都正常工作。

你在运行防火墙吗?还有,主人的IP仍然是192.168.1.10吗?愚蠢的问题,但有时人们会忽略显而易见的东西。使用
sudo apt get Install gufw
命令安装gufw,并检查防火墙设置。也请登录。
有人对让从属数据节点识别Namenode有什么建议吗?
-这更像是Ubuntu查询而不是Hadoop查询?它应该是
如何让从VM与主VM对话
@ChrisShain:这是默认的Ubuntu 1
127.0.0.1  localhost
192.168.201.101 master
192.168.201.102 slave1
192.168.201.103 slave2
$HADOOP_HOME/bin> hdfs namenode -format -force
$HADOOP_HOME/sbin> ./start-dfs.sh
$HADOOP_HOME/sbin> ./start-yarn.sh
$HADOOP_HOME/bin> hdfs dfsadmin -report