快照是HDFS的关键备份特性,可创建文件系统或目录在特定时间点的只读副本,适合快速恢复整个目录或文件系统到某一时刻的状态。
hdfs dfsadmin -allowSnapshot /path/to/directory命令,允许该目录创建快照。hdfs dfs -createSnapshot /path/to/directory snapshotName命令生成快照(如hdfs dfs -createSnapshot /data/project1 project1_snapshot_202510)。hdfs dfs -cp /path/to/snapshotDir/. /path/to/destinationDir命令将快照内容复制到目标目录(如hdfs dfs -cp /data/project1/.snapshot/project1_snapshot_202510/. /data/project1_restore)。HDFS默认将每个数据块复制到3个不同节点(可通过dfs.replication参数调整),是基础的数据冗余策略,无需额外操作即可实现备份。
hdfs dfsadmin -getReplication /path/to/file命令查看文件的副本数。hdfs dfsadmin -setReplication /path/to/file 3命令调整副本数(如将副本数从2增加到3)。DistCp是Hadoop内置的分布式复制工具,支持在HDFS集群间或集群内进行全量/增量备份,适合大规模数据同步。
hadoop distcp [OPTIONS] source_path destination_path(如hadoop distcp hdfs://namenode1:8020/data/source hdfs://namenode2:8020/data/backup)。-update参数,仅复制源路径中修改或新增的文件(如hadoop distcp -update hdfs://source hdfs://backup)。借助第三方工具可实现异地/云端备份,提升数据安全性,常见工具包括:
mc(MinIO Client)命令将HDFS数据同步到MinIO(如mc mirror hdfs://namenode/data minio/mybucket)。备份HDFS配置文件(如core-site.xml、hdfs-site.xml、mapred-site.xml)是恢复集群的基础,需定期归档。
tar -czvf /backup/hdfs/hdfs-config-$(date +%Y%m%d).tar.gz /etc/hadoop/conf(将配置目录打包为压缩文件)。cron任务定期执行备份脚本(如每天凌晨2点备份):0 2 * * * /bin/bash /scripts/backup_hdfs_config.sh。若已启用快照功能,可从快照中恢复数据到指定目录,是最快速的恢复方式之一。
hdfs dfs -cp /path/to/snapshotDir/. /path/to/destinationDir(如恢复project1目录到project1_restore):hdfs dfs -cp /data/project1/.snapshot/project1_snapshot_202510/. /data/project1_restore。HDFS的回收站功能可将删除的文件暂存(默认保留1天),适合误删除文件的快速恢复。
hdfs-site.xml中配置fs.trash.interval=1440(单位:分钟,默认1天)和fs.trash.checkpoint.interval=60(检查点间隔,默认1小时)。hdfs dfs -mv /user/root/.Trash/Current/deleted_file /path/to/restore命令(如恢复file.txt):hdfs dfs -mv /user/root/.Trash/Current/file.txt /data/project1。HDFS的副本机制会自动修复丢失的数据块(默认3副本),若某节点宕机,数据会从其他副本节点复制到新节点。
hdfs dfsadmin -report命令查看集群中DataNode的状态和数据块分布。hdfs balancer命令触发数据均衡,强制复制丢失的块。若NameNode宕机,需从Secondary NameNode或备份中恢复元数据:
cp -r /secondary-namenode/data /namenode/data && start-dfs.sh)。若未启用回收站或快照,可通过NameNode的**编辑日志(EditLog)**恢复最近删除的数据:
hdfs editlog工具将编辑日志转换为可读格式,提取删除操作前的数据。cron日志或监控工具(如Prometheus)检查备份是否成功,及时处理失败情况。