一般namenode只格式化一次,重新格式化不仅会导致之前的数据都不可用,而且datanode也会无法启动。在datanode日志中会有类似如下的报错信息:
java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-root/dfs/data: namenode clusterID = CID-7f25bc20-e822-4b15-9063-4da48884cb60; datanode clusterID = CID-911d3bd8-bf2f-4cb7-8401-d470c89798e4
这是因为每次格式化namenode会生成一个新的clusterID,而datanode的clusterID还是旧的。
如下两种方法可以帮助解决此错误:
方法1:
关闭集群
[root@master /]# stop-dfs.sh
删除所有datanode节点的文件
#删除所有datanode节点的文件
#rm -rf /tmp/hadoop-{username}/*
rm -rf /tmp/hadoop-root/*
重新格式化namenode:
hdfs namenode -format
启动集群:
[root@master local]# start-dfs.sh
方法2:
默认情况下
namenode的clusterID写在/tmp/hadoop-root/dfs/name/current/VERSION文件中
datanode的clu