CentOS 上 Hadoop HDFS 数据备份与恢复指南
一 备份策略与总体建议
- 明确备份范围:区分业务数据(如 /user/、/data/**)与元数据(NameNode 元数据、配置文件),两者备份方式不同。
- 选择备份方式:优先使用 HDFS 快照(目录级时间点副本)、distcp(跨目录/跨集群/跨存储的高效复制)、NameNode 元数据检查点(fsimage 级别),必要时再配合 rsync/tar 做落地归档或配置备份。
- 周期与保留:结合变更频率设定全量/增量节奏与保留策略(如近 7/30/90 天),并定期做恢复演练与校验。
- 高可用前提:HDFS 副本(如 dfs.replication=3)提供可用性,不等于备份;备份用于灾难恢复、误删回滚、合规归档等场景。
二 常用备份方法步骤
三 自动化与监控
- 定时任务示例(crontab)
- 每天 02:00 执行 distcp 备份:
- 0 2 * * * /usr/local/bin/hdfs_backup_distcp.sh >> /var/log/hdfs_backup.log 2>&1
- 每天 01:00 备份配置文件:
- 0 1 * * * /usr/local/bin/hdfs_backup_config.sh >> /var/log/hdfs_config_backup.log 2>&1
- 建议:统一日志目录与日志轮转(logrotate),脚本内做“返回码检查/失败告警”,并保留最近 N 份备份与校验信息。
四 恢复与校验
- 从快照恢复:hdfs dfs -cp /path/to/dir/.snapshot/snapshot_20251122 /path/to/restore
- 从 distcp 备份恢复:hadoop distcp hdfs://backup-nn:8020/backup/hdfs/2025-11-22 /user/hadoop/data
- 回收站误删恢复:hdfs dfs -mv /user/root/.Trash/Current/file /user/root/original
- 一致性校验:hdfs fsck / -files -blocks -locations;必要时再做小样本抽样读取验证。
五 注意事项与最佳实践
- 快照前先允许:对目标目录执行 -allowSnapshot,避免快照失败。
- 变更窗口与限流:大目录备份建议选择低峰期,并使用 distcp 的 -bandwidth 与 -m 控制带宽与并发,减少对业务影响。
- 保留与异地:按 RPO/RTO 设定保留周期,关键备份建议“同城+异地/对象存储”双地留存。
- 定期演练:至少每 季度做一次恢复演练与校验,确保备份可用。
- 安全合规:备份链路与存储加密,访问权限最小化,审计留痕。