原因:
其中一个原因是由于多次格式化数据目录而导致NameNode中的clusterID和DadaNode中的clusterID不一致
当我们执行文件系统格式化时,会在namenode数据文件夹(即配置文件中dfs.name.dir在本地系统的路径)中保存一个current/VERSION文件,记录namespaceID,标识了所格式化的 namenode的版本。
如果我们频繁的格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系统的路径)的current/VERSION文件只是你第一次格式化时保存的namenode的ID,因此就会造成datanode与namenode之间的id不一致。
处理方式一(完全分布以及伪分布适用):
找到hadoop安装目录下的tmp/dfs/name/current 目录当中的VERSION文件,打开这个文件复制clusterID
把这个clusterID粘贴到 tmp/dfs/data/current 目录下的VERSION中的clusterID
然后重启hadoop就可以了
下面以安装root目录下的Hadoop为例:
关闭hadoop:
stop-all.sh
进入Name目录的VERSION指令:
vim root/hadoop-2.7.1/tmp/dfs/name/current/VERSION
复制clusterID(最好用鼠标)
进入Data目录的VERSION指令
vim root/hadoop-2.7.1/tmp/dfs/data/current/VERSION
将文件中的clusterID改为上面复制的ID
然后重启hadoop就可以了
start-all.sh
处理方式二(伪分布可以用):
第二种解决办法将原来的tmp文件夹删除之后,再重新创建,
然后格式化 hadoop namenode -format