由于一些原因,我对namenode进行过很多次格式化,格式化时删除了Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容 (注意是删除目录下的内容不是目录)
重新格式化后启动hadoop,发现DataNode没有启动
原因:
当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。
解决方法:
在网上找了一些资料,都说是在dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值即可;
- 可是我的name目录下是空的,根本没有current/VERSION文件
- 不过,后来我查看DataNode的启动日志,发现了这个:
java.io.IOException: Incompatible clusterIDs in /usr/ywq/hadoop/hadoop