温馨提示×

Hadoop在Linux环境下怎样备份数据

小樊
35
2025-12-28 08:10:58
栏目: 智能运维

Hadoop在Linux环境下的备份与恢复实践

一、备份目标与总体策略

  • 明确备份对象:包括HDFS业务数据NameNode元数据、**Hive/元数据仓库(如 MariaDB)**等,不同对象采用不同工具与流程。
  • 选择备份方式:常用有DistCp(跨目录/跨集群大规模复制)、HDFS Snapshot(目录级时间点副本)、回收站恢复(误删快速回滚)、以及定时任务自动化
  • 组合策略:日常用Snapshot做快速回滚点,周期性用DistCp做跨目录/跨集群的全量/增量备份,关键元数据单独离线归档。

二、HDFS数据备份与恢复

  • 全量与增量复制(DistCp)
    • 全量备份:hadoop distcp hdfs://src-nn:8020/path hdfs://dst-nn:8020/backup/$(date +%F)
    • 增量备份(基于上次):hadoop distcp -update hdfs://src-nn:8020/path hdfs://dst-nn:8020/backup/latest
    • 并行与带宽控制:hadoop distcp -m 50 -bandwidth 100 hdfs://src hdfs://dst(示例为50个map、100MB/s带宽上限)
    • 定时执行(cron):0 2 * * * /usr/bin/hadoop distcp -update -m 50 hdfs://src /backup/daily-$(date +%F) >> /var/log/hadoop-backup.log 2>&1
  • 时间点快照(Snapshot)
    • 开启快照(一次性,对目录设置):hdfs dfsadmin -allowSnapshot /path/to/data
    • 创建快照:hdfs dfs -createSnapshot /path/to/data snap_20251228
    • 基于快照恢复:hdfs dfs -cp /path/to/data/.snapshot/snap_20251228/file_or_dir /path/to/data/restore
  • 回收站快速回滚
    • 查看回收站:hdfs dfs -ls hdfs://nn:8020/.Trash/Current/
    • 恢复误删:hdfs fs -cp hdfs://nn:8020/.Trash/Current//your_file /path/to/data/
  • 备份验证与一致性
    • 校验与抽样对比:hdfs dfs -checksum /path/file;抽样对比源/备目录的文件数量、大小、校验和

三、NameNode元数据与集群组件备份

  • NameNode元数据备份(HA与非HA均适用)
    • 进入安全模式并保存镜像:sudo -u hdfs hdfs dfsadmin -safemode enter;sudo -u hdfs hdfs dfsadmin -saveNamespace
    • 备份目录(示例):sudo -u hdfs cp -a /dfs/nn/current /nnbak/$(date +%F)
    • 恢复要点:在新/原节点停止NN,替换current目录,校正属主属组(如hdfs:hdfs),退出安全模式并启动NN:sudo -u hdfs hdfs dfsadmin -safemode leave
  • Hive/元数据仓库(如 MariaDB)
    • 备份:mysqldump -uroot -p --databases am cm hue metastore nav_as nav_ms oozie rm sentry > dump.sql
    • 恢复:mysql -uroot -p < dump.sql
  • 管理与调度层(可选)
    • 使用Ambari Backup/Cloudera Manager进行平台级备份与恢复(如:ambari-backup backup --target-dir=/backup/location)。

四、自动化、监控与最佳实践

  • 自动化与日志
    • 脚本化封装DistCp/快照,配合cron定时;统一输出到**/var/log/hadoop-backup.log**,并接入告警(如日志关键字失败告警)。
  • 保留与异地
    • 按业务设定保留周期(如近7/30/90天),定期清理过期备份;跨机架/机房/云桶存放,降低单点风险。
  • 安全与合规
    • 备份链路启用加密传输(如启用HTTPS/SSL),备份存储设置最小权限访问控制;对敏感数据考虑加密存储
  • 验证与演练
    • 定期做恢复演练校验和比对,确保备份可用;监控DistCp作业成功率、时延、带宽占用

五、常用命令速查表

场景 命令示例
DistCp全量 hadoop distcp hdfs://src:8020/data hdfs://dst:8020/backup/$(date +%F)
DistCp增量 hadoop distcp -update hdfs://src:8020/data hdfs://dst:8020/backup/latest
快照创建 hdfs dfs -createSnapshot /data snap_20251228
快照恢复 hdfs dfs -cp /data/.snapshot/snap_20251228/file /data/restore
回收站恢复 hdfs fs -cp hdfs://nn:8020/.Trash/Current/file /data/
元数据备份 sudo -u hdfs hdfs dfsadmin -safemode enter && sudo -u hdfs hdfs dfsadmin -saveNamespace && sudo -u hdfs cp -a /dfs/nn/current /nnbak/$(date +%F)
定时备份 0 2 * * * /usr/bin/hadoop distcp -update hdfs://src /backup/daily-$(date +%F) >> /var/log/hadoop-backup.log 2>&1

0