hadoop平台运行hdfs时datanode无法正常运行的一种情况
本情况发生的基础为配置文件基本正确,环境变量正常,hadoop集群能够正常启动,但是缺少datanode运行。
今天在运行hdfs时
输入jps发现slave上缺少datanode
在输入hdfs dfs -put words /123时发现命令报错并且提示There are 0 datanode(s) running and no node(s) are excluded in this operation.
即缺少datanode。仔细回想今天的操作,发现格式化(hadoop namenode -format)了许多次,那么此时即发现,只是对namenode进行了格式化,而datanode并没有格式化,而每一次格式化都会刷新namenode的clusterID,但datanode的ID并没有发生变化。
因此,有一下两种解决办法
解决办法 ## 1.复制namenode的clusterID,粘贴覆盖到datanode的clusterID上,然后停止hdfs并重新启动即可。
详细步骤为
a. cd /usr/local/src/hadoop2.6.5(省略)/dfs/name/curent(进入name目录里)
b.cat VERSION并复制clusterID
c. cd /usr/local/src/hadoop2.6.5(省略)/dfs/data/curent(进入data目录里)
d. vim VERSION并修改它的clusterID
注意!!!!这里地址为每个人不同的地址,只有后面的dfs后是相同的,以我的hadoop为例,namenode在master上,而data的部分在两个slave上,我复制master上的ID分别到两个slave上即可。
解决办法## 2.删除dfs后面name和data的所有数据并重新格式化(hadoop namenode -format)然后重新启动即可。注意!!!!name和data分别在master和两个slave上,分别删除。
附:单独以hdfs为例,
停止stop-dfs.sh
启动start-dfs.sh