前提条件:需提前在core-site.xml中启用回收站功能,配置如下:
<property>
<name>fs.trash.interval</name>
<value>120</value> <!-- 回收站保留时间(分钟),0表示禁用 -->
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>120</value> <!-- 回收站检查点间隔(分钟) -->
</property>
恢复步骤:
若文件被误删除,可直接从回收站恢复至原路径或指定路径:
hdfs dfs -cp /user/username/.Trash/Current/deleted_file /path/to/restore
说明:回收站中的文件会按fs.trash.interval设置的保留时间自动清理,需及时恢复。
前提条件:需提前为目标目录启用快照功能。
创建快照:
# 允许目标目录创建快照
hdfs dfsadmin -allowSnapshot /target_directory
# 创建快照(命名需具有描述性,如“20251103_backup”)
hdfs dfs -createSnapshot /target_directory snapshot_name
恢复文件:
若目录下文件丢失,可从快照中复制所需文件至原路径:
hdfs dfs -cp /target_directory/.snapshot/snapshot_name/lost_file /path/to/restore
优势:快照是目录的即时只读副本,恢复速度快,适合频繁修改的重要目录。
作用:检查HDFS文件系统的完整性,定位损坏或丢失的数据块,并支持修复操作。
基本命令:
hdfs fsck / -files -blocks -locations # 检查根目录下所有文件的块状态
修复操作:
hdfs fsck / -list-corruptfileblocks
hdfs fsck / -delete
适用场景:NameNode无法启动(报错“元数据缺失”或“校验失败”),且无可用备份时。
操作步骤:
hdfs --daemon stop namenode
/backup/hdfs)复制fsimage(命名空间镜像)和edits(操作日志)文件至NameNode的current目录(默认路径:/hadoop-data/name/current/):cp /backup/fsimage_* /hadoop-data/name/current/
cp /backup/edits_* /hadoop-data/name/current/
hdfs namenode -recover # 按提示输入“y”确认恢复
注意:此方法风险较高,若元数据备份不完整,可能导致数据进一步丢失。
适用场景:某DataNode磁盘损坏,导致存储的数据块无法读取,且副本数不足。
操作步骤:
hdfs --daemon stop datanode
hdfs dfsadmin -refreshNodes
dfs.datanode.data.dir(指向新磁盘路径),启动DataNode后,集群会自动同步数据块至新节点。工具推荐:
yum install testdisk # 安装
testdisk # 运行并按向导操作
wget https://download.r-studio.org/r-studio-x.x.x.tar.gz # 下载
tar -xzf r-studio-x.x.x.tar.gz
sudo mv r-studio /opt/ # 安装至/opt目录
说明:第三方工具需在停止HDFS服务后使用,避免数据覆盖,恢复成功率取决于数据被删除的时间和磁盘使用情况。
distcp工具复制至其他集群)是恢复的最可靠方式。hdfs dfsadmin -report定期检查DataNode状态,通过hdfs fsck定期检查块完整性,及时发现并处理问题。