在 CentOS 上“修复 HDFS 异常”要根据具体异常现象来对症下药。下面我按常见故障场景给你一套排查 + 修复思路,你可以对照使用。
hdfs dfsadmin -report
或(Hadoop 3+):
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
查看:
hdfs namenode -recover
按提示选择:
c 删除损坏 edits 跳过⚠️ 有数据丢失风险,先备份
dfs.namenode.name.dir
# 停止 HDFS
stop-dfs.sh
# 从 SecondaryNameNode 恢复
cp -r /path/to/namesecondary/* /path/to/namenode/
hdfs namenode -importCheckpoint
tail -200 /var/log/hadoop-hdfs/hadoop-hdfs-datanode-*.log
常见原因:
cat /data/hdfs/name/current/VERSION
cat /data/hdfs/data/current/VERSION
如果 clusterID 不同:
# 停 DataNode
systemctl stop hadoop-datanode
# 删除 data 目录
rm -rf /data/hdfs/data/*
# 重启
systemctl start hadoop-datanode
hdfs fsck / -list-corruptfileblocks
hdfs fsck / -repair
hdfs fsck / -delete
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode leave
systemctl status hadoop-zkfc
systemctl start hadoop-zkfc
hdfs haadmin -transitionToActive nn1 --forceactive
df -h
清理:
du -sh /data/hdfs/data/*
chown -R hdfs:hadoop /data/hdfs
chmod 700 /data/hdfs
jps 看进程/var/log/hadoop-hdfs/)dfsadmin -reportfsck你可以把以下信息发我:
hdfs dfsadmin -report 输出Cannot obtain block、NameNode is in safe mode)我可以精确到命令级修复方案。