温馨提示×

linux hdfs怎样恢复故障

小樊
38
2026-09-16 18:01:12
栏目: 智能运维

在 Linux 环境下,HDFS(Hadoop 分布式文件系统)故障恢复通常要分“故障类型”来处理。下面我按常见故障场景 → 恢复步骤给你一个实用指南。


一、先确认 HDFS 整体状态

在 NameNode 或任意客户端节点执行:

hdfs dfsadmin -report

hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

重点看:

  • NameNode 是否 Active / Standby
  • DataNode 数量是否正常
  • 是否有 Missing / Corrupt 块

二、NameNode 故障恢复

1️⃣ NameNode 进程挂掉(非 HA)

jps

如果没有 NameNode

hadoop-daemon.sh start namenode

systemctl start hadoop-namenode

2️⃣ NameNode 元数据损坏(fsimage / edits)

如果有 Secondary NameNode / Checkpoint

hdfs namenode -importCheckpoint

如果没有备份,只能从最近 fsimage 恢复:

hdfs namenode -rollback

(仅限升级失败场景)

⚠️ 元数据损坏通常 无法 100% 恢复数据


三、HA 模式下 NameNode 切换失败

查看状态

hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

手动切换

hdfs haadmin -transitionToActive nn1

ZKFC 异常

hadoop-daemon.sh start zkfc

四、DataNode 故障恢复

DataNode 宕机

hadoop-daemon.sh start datanode

DataNode 无法注册到 NameNode

检查:

  • /etc/hosts
  • dfs.datanode.address
  • 防火墙
systemctl stop firewalld

磁盘坏掉

  • 换盘
  • 清空 dfs.datanode.data.dir
  • 重启 DataNode(HDFS 会自动复制副本)

五、数据块损坏 / 丢失

检查损坏块

hdfs fsck / -list-corruptfileblocks

删除损坏文件(无法恢复)

hdfs fsck / -delete

副本不足

hdfs dfs -setrep -R 3 /

六、误删文件恢复(回收站)

HDFS 有 Trash(默认开启):

hdfs dfs -ls /user/用户名/.Trash

恢复:

hdfs dfs -mv /user/用户名/.Trash/... /目标路径

⚠️ 如果关闭了 Trash,基本无法恢复


七、整体安全模式(SafeMode)

查看

hdfs dfsadmin -safemode get

强制离开(谨慎)

hdfs dfsadmin -safemode leave

八、推荐生产环境配置(防故障)

  • ✅ NameNode HA(ZKFC)
  • ✅ 副本数 ≥ 3
  • ✅ 定期 fsck
  • ✅ 开启 Trash
  • ✅ 监控(Prometheus + Grafana)

九、如果你愿意,我可以

  • 根据你 具体报错日志 给精准方案
  • 帮你判断是 NameNode / DataNode / 网络 / 磁盘 问题
  • 给你一套 HDFS 故障排查命令清单

你可以直接贴:

报错信息 / jps 输出 / hdfs dfsadmin -report 结果

0