在 CentOS 上恢复 HDFS 数据的实用步骤
一、先判断丢失类型与优先级
二、回收站恢复(最快)
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>1440</value>
</property>
hdfs dfs -ls /user/<用户名>/.Trash/Currenthdfs dfs -mv /user/<用户名>/.Trash/Current/<原路径> /<原路径>hdfs dfs -expunge三、快照恢复(时间点恢复)
hdfs dfsadmin -allowSnapshot /path/to/dir
hdfs dfs -createSnapshot /path/to/dir snapshot_20241202
# 将快照内容恢复到目标目录
hdfs dfs -cp -r /path/to/dir/.snapshot/snapshot_20241202 /path/to/restore
# 或恢复到原目录(先备份当前内容)
hdfs dfs -cp -r /path/to/dir /path/to/dir_bak_$(date +%F)
hdfs dfs -cp -r /path/to/dir/.snapshot/snapshot_20241202/. /path/to/dir
hdfs dfs -deleteSnapshot、hdfs dfs -renameSnapshot、hdfs lsSnapshottableDir、hdfs snapshotDiff。四、编辑日志回滚(无回收站且无快照时)
hdfs oev -i edits_inprogress_0000000000000003454 -o edits.xmlhdfs oiv 或 hdfs namenode -importCheckpoint 完成,操作前请确认你的 Hadoop 版本与官方文档)。五、备份与跨集群恢复(distcp)
# 从备份位置恢复到 HDFS
hadoop distcp -m 50 hdfs://backup-nn:8020/backup/path /path/to/restore
# 跨集群恢复(带宽/并发可控)
hadoop distcp -m 100 -bandwidth 100 hdfs://src-nn:8020/data /dst-nn:8020/data
mkdir -p /backup/hdfs
tar -czvf /backup/hdfs/hdfs-config-$(date +%Y%m%d%H%M%S).tar.gz /etc/hadoop/conf