在 CentOS 上“修复 HDFS”没有单一命令,需要先判断是哪一类问题。下面按常见场景给你一套排错 + 修复思路,你可以对照使用。
# 查看 Hadoop 版本
hadoop version
# 查看 HDFS 状态
hdfs dfsadmin -report
# 查看 NameNode / DataNode 进程
jps
常见问题进程缺失:
NameNodeDataNodeResourceManager如果是第一次搭建:
hdfs namenode -format
⚠️ 会清空 HDFS 数据,仅限新集群
查看日志:
tail -n 200 $HADOOP_HOME/logs/hadoop-*-namenode-*.log
修复方式:
hdfs namenode -importCheckpoint
# 停止 NameNode
stop-dfs.sh
# 恢复元数据目录
cp -r /backup/namenode /data/hadoop/dfs/name
start-dfs.sh
日志报错:
Incompatible clusterIDs
解决:
# 查看 NameNode clusterID
cat $HADOOP_HOME/dfs/name/current/VERSION
# 修改 DataNode
cat $HADOOP_HOME/dfs/data/current/VERSION
把 DataNode 的 clusterID 改成和 NameNode 一致,然后重启:
start-dfs.sh
chown -R hdfs:hadoop /data/hadoop/dfs
chmod -R 700 /data/hadoop/dfs
查看:
hdfs dfsadmin -safemode get
强制退出(谨慎):
hdfs dfsadmin -safemode leave
如果是块丢失:
hdfs fsck / -delete
hdfs fsck / -files -blocks -locations
hdfs fsck / -delete
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
df -h
清理 /data 或 HDFS 日志
stop-dfs.sh
jps
# 检查日志
tail -n 200 $HADOOP_HOME/logs/*.log
# 修复 clusterID / 权限 / 元数据
start-dfs.sh
hdfs dfsadmin -report
如果你愿意,可以直接把报错日志贴出来(NameNode / DataNode),我可以帮你精确定位并给出修复命令。