您的位置:首页 > Web前端 > Node.js

解决hadoop启动时由于hostname不一致导致DataNode无法正常启动

2018-03-06 00:00 1236 查看
我在照着教程试着做4台节点对hadoop的hdfs(

node01 : NameNode

node02 : DataNode

node03 : DataNode

node04 : DataNode )

搭建环境:

* CentOS 6.5
* Hadoop 2.6.5

配置时,发生了一个错误, 具体表现为 Node02 节点的 DataNode 进程怎么都启动不起来.并且没有报错.
但是SeconderyNameNode进程可以在 Node02 节点上面启动

曾经尝试过:

重新安装hadoop 对/etc/profile文件重写java路径和Hadoop路径

对node01(NameNode)文件系统重新格式化

重写core-site.xml和hdfs-site.xml配置
但都没有用.几经排查,发现了一个现象:
在hadoop安装目录下的logs目录中

查看/opt/sxt/hadoop-2.6.5/logs/hadoop-root-datanode-node02.log日志
发现里面提示了了一个

错误 第3行:

STARTUP_MSG: host = java.net.UnknownHostException: node02: node02

于是从网上查询发现是hosts文件中的dns信息配置错误,但是我的对应hosts文件中去查找错误时并没有问题
于是在node02节点上ping了一下node02



发现在node02上面ping node02提示unknown host name

但是在node01上面ping node02 提示正常,于是尝试将node01 节点的hosts文件传输到了node02文件上面
重启node02节点再次尝试ping node02 成功,之后在此尝试重启hdfs服务,没有异常.

原因:hadoop在格局化HDFS的时候,经由hostname获取到的主机名与在/etc/hosts文件中进行映射的时候,出现名字不一样之后导致出错。

即:配置文件slaves 填写的 主机名要与 节点的主机名一致(节点机上hostname查看)

查看本身用户的主机名:hostname

查看/etc/hosts内容:cat /etc/hosts

hosts文件 里面我们自己随意起的主机名字是不可以的,必须与 节点主机hostname一致。
结论:节点主机和hostname主机中的/etc/hosts下的hostname还有配置文件slaves 中的hostname 必须完全一致。

总结:

日志中提示:java.net.UnknownHostException: node02: node02 错误时一定要先ping各个节点是否能够使用hostname ping到自己.看看是不是能够走通,如果不通,先试着修复这个问题.

并不一定是主节点和从节点网络通信异常的原因,本节点不认识本节点也可能会导致这个错误,而且这个错误是由于主机别名写到./hadoop/etc/hadoop/slaves中标定DataNode节点的别名导致的,另外一种解决方案便是将slaves文件中的别名改为ip地址

hdfs无法正常启动并且不报错的另一个可能是当hdfs文件系统重新格式化后而DataNode节点没有将格式化之前的文件删除,当从DataNode节点去文件中查找clusterID并且和NameNode去匹配时发现不同于是会自动关闭.还没有遇到过这种情况这里先给出链接之后如果是这种情况的化遇到再去找解决方案吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop;Hdfs;DataNode