格式化Hadoop的namenode后如何恢复datanode的version文件并解决启动失败问题
问题根因定位
- 核心原因是你集群的HDFS目录配置存在冲突,格式化NameNode时错误将DataNode的存储目录也识别为NameNode的存储目录写入了NAME_NODE角色标记,导致后续DataNode启动时校验VERSION角色不匹配失败。
- 常见的配置错误场景是
hdfs-site.xml中dfs.namenode.name.dir和dfs.datanode.data.dir两个参数配置了重叠/相同的路径,或者你在删除目录时误操作将DataNode的目录挂载/归属配置错误,也有可能是你误在DataNode节点执行了NameNode格式化命令。
修复步骤
- 首先停止所有HDFS相关进程,执行命令:
stop-dfs.sh - 检查所有节点的
hdfs-site.xml配置文件,确认两个目录参数完全独立无重叠,不存在互相包含的关系:
正确配置参考:
<property> <name>dfs.namenode.name.dir</name> <value>/hadoop/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/hadoop/hdfs/data</value> </property>
- 完全清空两个目录下的所有内容(包括隐藏文件),如果删除时提示文件被占用,先确认所有HDFS进程都已终止后再操作,执行命令:
rm -rf /hadoop/hdfs/namenode/* /hadoop/hdfs/data/* - 仅在NameNode节点执行格式化命令,禁止在DataNode节点执行该命令:
hadoop namenode -format - 启动HDFS集群:
start-dfs.sh
验证方法
- 启动后查看DataNode的VERSION文件路径
/hadoop/hdfs/data/current/VERSION,确认其中storageType参数值为DATA_NODE - 执行
jps命令确认DataNode进程正常存在,执行hdfs dfsadmin -report查看所有DataNode节点状态为正常在线
内容的提问来源于stack exchange,提问作者user14042016
相关产品推荐
相关产品推荐

