温馨提示×

linux hdfs怎么恢复

小樊
45
2026-10-16 06:34:30
栏目: 智能运维

在 Linux 环境下,HDFS(Hadoop Distributed File System)恢复通常分为几种场景。下面按常见情况给你讲清楚,并给出可操作的命令和思路。


一、误删文件恢复(最常见)

1. 利用 HDFS 回收站(Trash)恢复

HDFS 默认有回收站机制(如果没关)。

查看回收站目录:

hdfs dfs -ls /user/<用户名>/.Trash/Current

恢复文件:

hdfs dfs -mv /user/<用户名>/.Trash/Current/路径/文件 /目标路径

⚠️ 注意:

  • 回收站默认保留 6 小时(fs.trash.interval)
  • 用 hdfs dfs -rm 删除才会进回收站
  • hdfs dfs -rm -skipTrash 不会进回收站

2. 回收站已清空或无回收站

只能从 快照 / 备份 / NameNode 元数据 恢复。


二、启用 HDFS 快照恢复(推荐)

如果你之前对目录开启了快照:

查看快照:

hdfs dfs -ls /path/.snapshot

从快照恢复:

hdfs dfs -cp /path/.snapshot/snapshotName/file /path/

开启快照(提前做):

hdfs dfsadmin -allowSnapshot /path
hdfs dfs -createSnapshot /path snapshotName

三、NameNode 故障恢复(元数据丢失)

1. 有 Secondary NameNode / Checkpoint

恢复步骤:

  1. 停止 HDFS
  2. 拷贝 dfs.namenode.name.dir 下的元数据
  3. 从 Secondary NameNode 的 checkpoint 恢复
# 从 Secondary NameNode 拷贝
scp -r secondary:/dfs/namesecondary/* /dfs/name/
  1. 启动 NameNode

2. 有 NameNode 备份(HA)

如果是 HDFS HA(JournalNode):

  • 直接启动 Standby NameNode
  • 自动同步元数据
hdfs --daemon start namenode

四、数据块丢失(DataNode 问题)

1. 查看丢失块

hdfs fsck / -files -blocks -locations

2. 删除损坏块(无备份时)

hdfs fsck / -delete

⚠️ 会丢失数据,仅用于恢复集群状态


五、从外部备份恢复(最安全)

如果有:

  • HDFS distcp 备份
  • 本地/对象存储备份

恢复:

hdfs distcp hdfs://backupCluster/path hdfs://mainCluster/path

六、恢复前必做检查清单 ✅

  • [ ] 是否启用回收站
  • [ ] 是否有快照
  • [ ] NameNode 是否 HA
  • [ ] 是否有定期备份
  • [ ] fsck 检查块状态

七、应急建议

生产环境原则:

  • 先 fsck,别急着删
  • 能快照恢复就不碰元数据
  • 元数据比数据更值钱

如果你能告诉我:

  • 是 误删文件 / NameNode 挂了 / 数据块损坏
  • 是否 HA / 有快照 / 有备份

我可以给你精确的一步一步恢复命令。

0 踩