在 Linux 环境下,HDFS(Hadoop 分布式文件系统)故障恢复通常要分“故障类型”来处理。下面我按常见故障场景 → 恢复步骤给你一个实用指南。
在 NameNode 或任意客户端节点执行:
hdfs dfsadmin -report
或
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
重点看:
jps
如果没有 NameNode:
hadoop-daemon.sh start namenode
或
systemctl start hadoop-namenode
如果有 Secondary NameNode / Checkpoint:
hdfs namenode -importCheckpoint
如果没有备份,只能从最近 fsimage 恢复:
hdfs namenode -rollback
(仅限升级失败场景)
⚠️ 元数据损坏通常 无法 100% 恢复数据
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2
hdfs haadmin -transitionToActive nn1
hadoop-daemon.sh start zkfc
hadoop-daemon.sh start datanode
检查:
/etc/hostsdfs.datanode.addresssystemctl stop firewalld
dfs.datanode.data.dirhdfs fsck / -list-corruptfileblocks
hdfs fsck / -delete
hdfs dfs -setrep -R 3 /
HDFS 有 Trash(默认开启):
hdfs dfs -ls /user/用户名/.Trash
恢复:
hdfs dfs -mv /user/用户名/.Trash/... /目标路径
⚠️ 如果关闭了 Trash,基本无法恢复
hdfs dfsadmin -safemode get
hdfs dfsadmin -safemode leave
fsck你可以直接贴:
报错信息 /
jps输出 /hdfs dfsadmin -report结果