Ubuntu上Hadoop的数据备份与恢复怎么做
导读:Ubuntu上Hadoop数据备份与恢复实操指南 一 备份恢复总览与前置检查 明确范围:备份对象包括HDFS数据、NameNode元数据、Hive Metastore 等关系型数据库、以及Hadoop配置与服务配置。HDFS默认通过多副本...
Ubuntu上Hadoop数据备份与恢复实操指南
一 备份恢复总览与前置检查
- 明确范围:备份对象包括HDFS数据、NameNode元数据、Hive Metastore 等关系型数据库、以及Hadoop配置与服务配置。HDFS默认通过多副本(常见为3)提供容错,但这不等同于跨集群或跨地域的备份,生产仍建议做快照、DistCp跨集群复制、定期离线拷贝等多层策略。操作前准备:确认HDFS可用空间、备份存储路径可写、备份窗口与带宽、以及必要的sudo/hdfs权限。关键检查命令:
- 查看HDFS健康与缺失副本:hdfs fsck / -files -blocks -locations
- 查看目录是否已启用快照:hdfs dfsadmin -listSnapshots
以上有助于在备份前后评估数据一致性与恢复目标可达性。
二 HDFS数据备份与恢复
-
快照 Snapshot(目录级时间点副本,适合快速回滚)
- 启用与创建:
- 允许快照:hdfs dfsadmin -allowSnapshot /path/to/dir
- 创建快照:hdfs dfs -createSnapshot /path/to/dir snap_20251117
- 查看与回滚:
- 查看快照:hdfs dfsadmin -listSnapshots /path/to/dir
- 目录级回滚(谨慎,会覆盖当前内容):先备份当前内容,再删除并拷贝快照回原路径:
- hdfs dfs -cp -r /path/to/dir /path/to/dir_bak_$(date +%F)
- hdfs dfs -rm -r /path/to/dir
- hdfs dfs -cp -r /path/to/dir/.snapshot/snap_20251117 /path/to/dir
- 文件级恢复:直接从快照拷贝所需文件/子目录。
- 适用:误删、误改、小范围回滚;注意快照仅对启用快照的目录有效。
- 启用与创建:
-
DistCp 跨集群/跨路径复制(适合定期全量/增量与异地备份)
- 基本用法:
- 备份到备份集群/路径:hadoop distcp hdfs://src-nn:8020/path hdfs://backup-nn:8020/backup/path_$(date +%F)
- 增量/同步:使用**-update/-diff**等选项按需同步变更。
- 适用:跨机房/跨地域灾备、集群迁移、定期全量+增量策略落地。
- 基本用法:
-
本地/对象存储离线拷贝(适合长期归档与低成本留存)
- 从HDFS拉取到本地归档:hdfs dfs -get /path/to/hdfs/dir /local/backup/path_$(date +%F)
- 从本地回灌到HDFS:hdfs dfs -put -f /local/backup/path_2025-11-17 /path/to/hdfs/dir
- 结合对象存储(如与HDFS兼容的接口或Hadoop S3A)可将归档存至S3/MinIO等,便于长期保留与多地域分发。
三 NameNode元数据与Hive Metastore备份恢复
-
NameNode 元数据(FSImage + EditLog)
- 备份步骤:
- 进入安全模式:sudo -u hdfs hdfs dfsadmin -safemode enter
- 保存命名空间并重置EditLog:sudo -u hdfs hdfs dfsadmin -saveNamespace
- 拷贝元数据目录(默认如**/dfs/nn/current**)到安全位置:sudo -u hdfs cp -r /dfs/nn/current /backup/nn/current_$(date +%F)
- 恢复步骤:
- 停止NameNode;备份现有元数据目录。
- 将备份的current目录拷回(如**/dfs/nn/**),并修正属主:sudo -u hdfs chown -R hdfs:hdfs /dfs/nn/current
- 退出安全模式并启动NameNode:sudo -u hdfs hdfs dfsadmin -safemode leave
- 提示:如启用HA,需对Active/Standby两台NN分别执行一致流程,并在恢复后核对ClusterID一致性。
- 备份步骤:
-
Hive Metastore(关系型数据库,如 MariaDB/MySQL)
- 备份:在数据库节点导出相关库(示例含hive/metastore等):
- mysqldump -uroot -p --databases hive metastore > metastore_backup_$(date +%F).sql
- 恢复:导入备份SQL:
- mysql -uroot -p < metastore_backup_2025-11-17.sql
- 建议与HDFS数据备份时间点尽量一致,避免元数据与数据不一致。
- 备份:在数据库节点导出相关库(示例含hive/metastore等):
四 配置与服务备份及自动化
- 配置文件备份(便于快速重建集群或回滚版本)
- 打包关键配置:tar -czvf hdfs-config-$(date +%F).tar.gz /etc/hadoop/conf /etc/hive/conf
- 自动化与监控
- 使用cron定时执行DistCp/快照/数据库导出;保留多版本与异地副本。
- 定期校验:抽样hdfs dfs -ls/cp验证可用性,使用hdfs fsck检查块健康;对关键库表做恢复演练。
五 常见场景与命令清单
- 误删目录的快速回滚(启用快照的目录)
- 备份当前:hdfs dfs -cp -r /data /data_bak_$(date +%F)
- 回滚:hdfs dfs -rm -r /data & & hdfs dfs -cp -r /data/.snapshot/snap_20251117 /data
- 跨集群灾备(每日全量)
- hadoop distcp -m 50 hdfs://nn1:8020/warehouse hdfs://nn2:8020/backup/warehouse_$(date +%F)
- 长期归档到本地
- hdfs dfs -get /warehouse /backup/warehouse_$(date +%F) & & tar -czvf warehouse_$(date +%F).tar.gz -C /backup/warehouse_$(date +%F) .
- 元数据与数据库
- NN备份:saveNamespace后拷贝**/dfs/nn/current**;恢复时拷回并修正属主。
- Metastore:mysqldump导出/导入对应库。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Hadoop的数据备份与恢复怎么做
本文地址: https://pptw.com/jishu/748695.html
