若HDFS启用了回收站功能,误删除的文件会暂存至用户.Trash目录,可通过以下步骤恢复:
core-site.xml中是否包含以下参数(若未配置,需修改后重启HDFS):<property>
<name>fs.trash.interval</name>
<value>120</value> <!-- 回收站保留时间(分钟),设为0则禁用 -->
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>120</value> <!-- 回收站检查点间隔(分钟) -->
</property>
hdfs dfs -ls /user/your_username/.Trash/Current,确认待恢复文件的路径。hdfs dfs -mv命令将文件从回收站移回原目录,例如:hdfs dfs -mv /user/your_username/.Trash/Current/deleted_file /original/path/
若目标目录已创建快照,可通过快照快速恢复数据:
# 允许目录创建快照
hdfs dfsadmin -allowSnapshot /target_directory
# 创建快照(命名如“snapshot_20251012”)
hdfs dfs -createSnapshot /target_directory snapshot_20251012
hdfs dfs -cp /target_directory/.snapshot/snapshot_20251012/deleted_file /original/path/
hdfs fsck命令修复损坏的数据块若数据块损坏(如hdfs dfsadmin -report显示块缺失或损坏),可通过以下步骤检查和修复:
hdfs fsck / -files -blocks -locations,查看损坏数据块的详细信息(如块ID、位置)。debug recoverLease命令尝试恢复指定数据块(替换/path/to/corrupt/block为实际块路径):hdfs debug recoverLease /path/to/corrupt/block -retries 3
若已通过DistCp或快照备份数据,可从备份中恢复:
hdfs://backup-cluster:8020/source_path和hdfs://current-cluster:8020/target_path为实际路径):hadoop distcp hdfs://backup-cluster:8020/source_path hdfs://current-cluster:8020/target_path
fsimage和edits文件复制到NameNode数据目录(默认/path/to/hadoop/data/namenode),然后重启HDFS。/path/to/hadoop/logs/hadoop-username-namenode-hostname.log),定位故障原因(如磁盘空间不足、配置错误)。start-dfs.sh。jps(确认DataNode进程是否存在)。hadoop-daemon.sh start datanode。DistCp或快照备份关键数据,降低数据丢失风险。hdfs dfsadmin -report检查DataNode数量、hdfs fsck /检查数据完整性,确保集群正常运行。