HDFS的回收站功能可将误删除文件移动至用户.Trash目录(而非立即删除),便于快速恢复。
core-site.xml中配置回收站参数(单位:分钟),例如设置fs.trash.interval=120(120分钟后自动清空回收站)、fs.trash.checkpoint.interval=60(每60分钟创建检查点)。配置后需重启HDFS集群生效。/user/username/.Trash/Current/路径下,使用hdfs dfs -cp命令将其复制回原路径即可。例如:hdfs dfs -cp /user/hadoop/.Trash/Current/deleted_file.txt /user/hadoop/original_path/。快照是HDFS文件系统或目录的只读时间点副本,适用于重要数据的备份与恢复。
hdfs dfsadmin -allowSnapshot /target_dir),然后执行创建命令(hdfs dfs -createSnapshot /target_dir/snapshot_name)。例如:hdfs dfsadmin -allowSnapshot /data → hdfs dfs -createSnapshot /data/snapshot_202510。hdfs dfs -cp命令从快照目录复制文件至目标路径。例如:hdfs dfs -cp /data/.snapshot/snapshot_202510/lost_file.txt /data/restored_path/。Hadoop提供fsck(文件系统检查)和DistCp(跨集群复制)工具,用于修复损坏数据或恢复丢失块。
hdfs fsck /path/to/check -files -blocks -locations(显示文件、块及位置信息);若需修复,可添加-move(将损坏块移至/lost+found)或-delete(删除损坏块)参数。hdfs distcp hdfs://source-cluster:8020/source_path hdfs://target-cluster:8020/target_path。若自动恢复失败,可通过手动操作修复NameNode元数据或DataNode数据块。
stop-dfs.sh),将备份的NameNode数据目录复制至原路径(cp -r /backup/namenode/data /current/namenode/data),再启动集群(start-dfs.sh)。dfs.replication参数设置的副本数);若自动复制失败,可使用hdfs dfsadmin -reportMissingBlocks查看丢失块,再用hdfs balancer触发数据均衡,强制复制块至其他节点。若上述方法均无效,可借助第三方工具恢复物理存储中的数据(需停止HDFS服务以避免数据覆盖)。
sudo systemctl stop hadoop-namenode hadoop-datanode),卸载HDFS数据目录(sudo umount /path/to/hdfs/data),运行sudo extundelete /path/to/hdfs/data --restore-all(恢复所有文件),最后重新挂载目录并重启服务。sudo yum install testdisk),运行sudo testdisk,选择目标分区,扫描后恢复所需文件。DistCp跨集群复制)、启用快照(hdfs dfsadmin -createSnapshot)、设置合理的副本数(dfs.replication=3),可大幅降低数据丢失风险。hdfs fsck验证数据完整性。