Ubuntu HDFS备份恢复怎么做
导读:Ubuntu 环境下 HDFS 备份与恢复实操指南 一 备份策略与常用手段 回收站 Trash:开启后,删除文件会进入用户目录的 /user/用户名/.Trash/Current,在保留期内可直接 mv 回原路径,适合短时误删恢复。关键参...
Ubuntu 环境下 HDFS 备份与恢复实操指南
一 备份策略与常用手段
- 回收站 Trash:开启后,删除文件会进入用户目录的 /user/用户名/.Trash/Current,在保留期内可直接 mv 回原路径,适合短时误删恢复。关键参数:fs.trash.interval(保留分钟,0 为关闭)、fs.trash.checkpoint.interval(检查点间隔,建议与前者一致或更小)。
- 快照 Snapshot:对目录开启快照后可快速回滚到某一时刻,空间开销小、对业务影响低。常用命令:hdfs dfsadmin -allowSnapshot 、hdfs dfs -createSnapshot []、hdfs dfs -cp /.snapshot//… 、hdfs snapshotDiff。
- DistCp 跨集群/跨机房备份:用于定期或持续的全量/增量同步,适合灾备与迁移。示例:hadoop distcp hdfs://src/ hdfs://backup/。
- 本地归档备份:将关键目录拉到 Ubuntu 本地或 NAS,配合 cron 定时执行,命令:hdfs dfs -get 。
- 纠删码与副本:在存储受限场景可用 Erasure Coding 降低容量占用;常规用 副本数(dfs.replication,默认 3) 保障高可用与自动修复。
- NameNode 元数据备份:定期备份 fsimage 与 edits(可由 Secondary/Checkpoint NameNode 辅助生成),用于极端故障时的元数据恢复。
二 快速恢复步骤
- 回收站恢复(误删未过保留期)
- 查看回收站:hdfs dfs -ls /user/用户名/.Trash/Current
- 恢复到原路径:hdfs dfs -mv /user/用户名/.Trash/Current/原/路径/文件 /原/路径/
- 若回收站已过期,转快照或备份恢复。
- 快照恢复(目录已启用快照)
- 查看快照:hdfs dfs -ls /path/.snapshot
- 恢复文件/目录:hdfs dfs -cp /path/.snapshot//子路径 /restore/路径
- 如需回滚整个目录,可先备份当前目录,再用快照覆盖。
- 备份还原(DistCp/本地)
- 跨集群:hadoop distcp hdfs://backup/路径 hdfs://prod/路径
- 本地归档:hdfs dfs -put /local/备份 hdfs/目标/路径
- 大数据量建议用 DistCp 并限速/并发参数优化。
- 副本自愈与块修复(节点故障/副本不足)
- 提高副本数触发修复:hdfs dfs -setrep -w 3 /path
- 检查健康:hdfs fsck / -files -blocks -locations
- 对损坏块:hdfs fsck / -delete(谨慎,先评估影响)。
- NameNode 元数据损坏/丢失(极端情况)
- 使用已备份的 fsimage 恢复(必要时结合 edits),或启动 NameNode 恢复流程:hdfs namenode -recover,按交互指引合并/回滚元数据。
- 恢复后执行 hdfs dfsadmin -safemode leave 退出安全模式并核验。
三 关键配置与检查命令
- 启用回收站(core-site.xml)
fs.trash.interval1440
fs.trash.checkpoint.interval1440 - 开启目录快照:hdfs dfsadmin -allowSnapshot
- 健康巡检:hdfs fsck / -files -blocks -locations;缺失块过多会进入 Safe mode,修复后可执行 hdfs dfsadmin -safemode leave 退出。
- 副本数调整:hdfs dfs -setrep -w 3 /path(根据业务与存储权衡设置)。
四 自动化与异地备份示例
- 定时本地归档备份脚本(Ubuntu crontab)
- 备份脚本:
#!/usr/bin/env bash
set -e
HDFS_SRC=“/data/important”
LOCAL_DST=“/backup/hdfs/$(date +%F)”
mkdir -p “$LOCAL_DST”
hdfs dfs -get “$HDFS_SRC” “$LOCAL_DST”可加:校验、压缩、上传至远端等
- 定时任务(每天 01:00):
0 1 * * * /usr/bin/env bash /opt/backup/hdfs_backup.sh > > /var/log/hdfs_backup.log 2> & 1
- 备份脚本:
- 跨集群/异地备份(DistCp)
- 例行全量/增量:hadoop distcp -m 50 -bandwidth 100 hdfs://prod/ hdfs://backup/
- 带宽/并发按网络与集群负载调节,避免影响线上业务。
五 常见陷阱与建议
- 不要随意格式化 NameNode:格式化会清空元数据与 fsimage/edits,导致数据不可达;操作前务必确认已有有效备份。
- 快照不是备份:快照是同一集群内某时刻的只读视图,不能替代跨集群/异地备份;关键数据应配合 DistCp/本地归档。
- 回收站默认关闭:务必在 core-site.xml 中开启并设置合理保留期,误删后第一时间从 .Trash/Current 恢复。
- 恢复演练与校验:定期做恢复演练与校验(如 fsck、抽样比对),确保备份可用与 RPO/RTO 达标。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu HDFS备份恢复怎么做
本文地址: https://pptw.com/jishu/789433.html
