解决hadoop启动时由于hostname不一致导致DataNode无法正常启动
2018-03-06 00:00
1236 查看
我在照着教程试着做4台节点对hadoop的hdfs(
node01 : NameNode
node02 : DataNode
node03 : DataNode
node04 : DataNode )
配置时,发生了一个错误, 具体表现为 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行:
于是从网上查询发现是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去匹配时发现不同于是会自动关闭.还没有遇到过这种情况这里先给出链接之后如果是这种情况的化遇到再去找解决方案吧!
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多次格式化后出现datanode无法正常启动的解决办法
- hadoop datanode 无法启动之 namenode ID 不一致解决办法。
- 重新格式化hadoop的namenode导致datanode无法启动的最简单解决办法
- 关于配置伪分布hadoop无法启动datanode的解决
- Hadoop-datanode无法正常启动
- 【hadoop】DataNode用jps查看无法启动解决办法
- Hadoop DataNode用jps查看无法启动的解决办法
- 端口被其他进程占用导致hadoop namenode,datanode,jobTracker,taskTracker,secondnamenode无法启动
- hadoop 安装出现的几种异常的处理方法,hadoop无法启动,no namenode to stop问题的解决方法,no datanode
- Hadoop datanode重新加载失败 无法启动解决步骤
- 【hadoop】DataNode,NameNode,JobTracker,TaskTracker用jps查看无法启动解决办法
- hadoop 平台解决datanode无法启动问题
- hadoop伪分布式下 无法启动datanode的原因及解决办法
- Hadoop 在重启或者多次格式化后无法启动datanode问题的解决
- 端口被其他进程占用导致hadoop namenode,datanode,jobTracker,taskTracker,secondnamenode无法启动
- hadoop 节点链接不通、datanode无法启动问题解决
- hadoop 完全分布式 下 datanode无法启动解决办法
- hadoop 在搭建分布式时遇到DataNode,NameNode,JobTracker,TaskTracker用jps查看无法启动解决办法
- hadoop 完全分布式 下 datanode无法启动解决方法
- hadoop 完全分布式 下 datanode无法启动解决方法