在 Linux 环境下,HDFS(Hadoop Distributed File System)恢复通常分为几种场景。下面按常见情况给你讲清楚,并给出可操作的命令和思路。
HDFS 默认有回收站机制(如果没关)。
查看回收站目录:
hdfs dfs -ls /user/<用户名>/.Trash/Current
恢复文件:
hdfs dfs -mv /user/<用户名>/.Trash/Current/路径/文件 /目标路径
⚠️ 注意:
hdfs dfs -rm 删除才会进回收站hdfs dfs -rm -skipTrash 不会进回收站只能从 快照 / 备份 / NameNode 元数据 恢复。
如果你之前对目录开启了快照:
查看快照:
hdfs dfs -ls /path/.snapshot
从快照恢复:
hdfs dfs -cp /path/.snapshot/snapshotName/file /path/
开启快照(提前做):
hdfs dfsadmin -allowSnapshot /path
hdfs dfs -createSnapshot /path snapshotName
恢复步骤:
dfs.namenode.name.dir 下的元数据# 从 Secondary NameNode 拷贝
scp -r secondary:/dfs/namesecondary/* /dfs/name/
如果是 HDFS HA(JournalNode):
hdfs --daemon start namenode
hdfs fsck / -files -blocks -locations
hdfs fsck / -delete
⚠️ 会丢失数据,仅用于恢复集群状态
如果有:
恢复:
hdfs distcp hdfs://backupCluster/path hdfs://mainCluster/path
生产环境原则:
- 先
fsck,别急着删- 能快照恢复就不碰元数据
- 元数据比数据更值钱
如果你能告诉我:
我可以给你精确的一步一步恢复命令。