目录大纲
Part01-基础概念与理论知识
1.1 HDFS快照原理
1.2 快照应用场景
1.3 备份恢复策略
Part02-生产环境规划与建议
2.1 快照策略规划
2.2 备份存储规划
2.3 恢复演练规划
Part03-生产环境项目实施方案
3.1 快照功能启用与配置
3.2 快照创建与管理
3.3 数据备份实施
3.4 数据恢复操作
Part04-生产案例与实战讲解
4.1 误删除数据恢复案例
4.2 数据版本回退案例
4.3 跨集群备份恢复案例
Part05-风哥经验总结与分享
5.1 快照管理最佳实践
5.2 备份恢复经验总结
Part01-基础概念与理论知识
1.1 HDFS快照原理
HDFS快照是文件系统的只读时间点副本,记录了某一时刻文件系统的状态。更多视频教程www.fgedu.net.cn 快照采用写时复制(Copy-on-Write)技术,创建快照时不立即复制数据,只有在数据被修改时才复制。
1.2 快照应用场景
HDFS快照适用于多种数据保护场景。学习交流加群风哥微信: itpux-com
– 数据误删除恢复
– 数据误修改回退
– 定期数据备份
– 数据版本管理
– 数据迁移前保护
1.3 备份恢复策略
完整的备份恢复策略应包括快照、远程备份、离线备份等多种方式。from bigdata视频:www.itpux.com
– 快照:快速恢复,适合误操作恢复
– 远程备份:异地容灾,适合灾难恢复
– 离线备份:长期保存,适合合规要求
Part02-生产环境规划与建议
2.1 快照策略规划
快照策略需要根据业务需求制定。更多学习教程公众号风哥教程itpux_com
– 关键数据目录:每日创建快照,保留7天
– 重要业务数据:每周创建快照,保留4周
– 历史数据目录:每月创建快照,保留12月
– 临时数据目录:不创建快照
2.2 备份存储规划
备份存储需要考虑容量、性能和成本。学习交流加群风哥QQ113257174
hdfs dfs -du -h /bigdata/warehouse/fgedu
50.0 G 150.0 G /bigdata/warehouse/fgedu/ods
30.0 G 90.0 G /bigdata/warehouse/fgedu/dwd
20.0 G 60.0 G /bigdata/warehouse/fgedu/dws
10.0 G 30.0 G /bigdata/warehouse/fgedu/ads
110.0 G 330.0 G /bigdata/warehouse/fgedu
2.3 恢复演练规划
定期进行恢复演练是保证备份有效性的关键。风哥提示:建议每季度进行一次恢复演练。
hdfs lsSnapshottableDir
drwxr-xr-x – hdfs hdfs 0 2024-01-16 10:00 /bigdata/warehouse/fgedu
drwxr-xr-x – hdfs hdfs 0 2024-01-16 10:00 /bigdata/warehouse/fgedu_logs
Part03-生产环境项目实施方案
3.1 快照功能启用与配置
3.1.1 启用目录快照功能
hdfs dfsadmin -allowSnapshot /bigdata/warehouse/fgedu
# 查看快照配额
hdfs dfsadmin -snapshotDiff /bigdata/warehouse/fgedu
Allowing snaphot on /bigdata/warehouse/fgedu succeeded
# 快照配额信息
Snapshot quota: 65536
Snapshot count: 0
3.1.2 配置快照保留策略
hdfs getconf -confKey dfs.namenode.snapshot.capture.openfiles
true
3.2 快照创建与管理
3.2.1 创建快照
hdfs dfs -createSnapshot /bigdata/warehouse/fgedu
# 创建命名快照
hdfs dfs -createSnapshot /bigdata/warehouse/fgedu daily_backup_20240116
# 查看快照列表
hdfs dfs -ls /bigdata/warehouse/fgedu/.snapshot/
Created snapshot /bigdata/warehouse/fgedu/.snapshot/s20240116-100000.000
# 命名快照创建成功
Created snapshot /bigdata/warehouse/fgedu/.snapshot/daily_backup_20240116
# 快照列表
Found 2 items
drwxr-xr-x – hdfs hdfs 0 2024-01-16 10:00 /bigdata/warehouse/fgedu/.snapshot/s20240116-100000.000
drwxr-xr-x – hdfs hdfs 0 2024-01-16 10:00 /bigdata/warehouse/fgedu/.snapshot/daily_backup_20240116
3.2.2 查看快照差异
hdfs dfs -mkdir /bigdata/warehouse/fgedu/test_dir
hdfs dfs -put /bigdata/local_data/test.txt /bigdata/warehouse/fgedu/test_dir/
# 查看快照差异
hdfs dfs -snapshotDiff /bigdata/warehouse/fgedu daily_backup_20240116
Difference between snapshot daily_backup_20240116 and current directory:
M ./
+ ./test_dir
+ ./test_dir/test.txt
3.2.3 删除快照
hdfs dfs -deleteSnapshot /bigdata/warehouse/fgedu s20240116-100000.000
# 验证删除结果
hdfs dfs -ls /bigdata/warehouse/fgedu/.snapshot/
Deleted snapshot /bigdata/warehouse/fgedu/.snapshot/s20240116-100000.000
# 剩余快照
Found 1 items
drwxr-xr-x – hdfs hdfs 0 2024-01-16 10:00 /bigdata/warehouse/fgedu/.snapshot/daily_backup_20240116
3.3 数据备份实施
3.3.1 快照自动备份脚本
# snapshot_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
DATE=$(date +%Y%m%d_%H%M%S)
SNAP_NAME=”daily_${DATE}”
DIRS=”/bigdata/warehouse/fgedu /bigdata/warehouse/fgedu_logs”
for dir in ${DIRS}; do
echo “Creating snapshot for ${dir}”
hdfs dfs -createSnapshot ${dir} ${SNAP_NAME}
if [ $? -eq 0 ]; then
echo “Snapshot ${SNAP_NAME} created successfully”
else
echo “Failed to create snapshot for ${dir}”
fi
done
# 清理过期快照(保留最近7天)
hdfs dfs -ls /bigdata/warehouse/fgedu/.snapshot/ | awk ‘{print $NF}’ | head -n -7 | while read snap; do
hdfs dfs -deleteSnapshot /bigdata/warehouse/fgedu $(basename ${snap})
done
./snapshot_backup.sh
Creating snapshot for /bigdata/warehouse/fgedu
Created snapshot /bigdata/warehouse/fgedu/.snapshot/daily_20240116_100500
Snapshot daily_20240116_100500 created successfully
Creating snapshot for /bigdata/warehouse/fgedu_logs
Created snapshot /bigdata/warehouse/fgedu_logs/.snapshot/daily_20240116_100500
Snapshot daily_20240116_100500 created successfully
3.3.2 跨集群数据备份
hadoop distcp -update -skipcrccheck \
hdfs://fgedu01.net.cn:8020/bigdata/warehouse/fgedu \
hdfs://backup-cluster.net.cn:8020/backup/fgedu_$(date +%Y%m%d)
24/01/16 10:10:00 INFO tools.DistCp: Number of paths: 100
24/01/16 10:10:05 INFO tools.DistCp: Number of files to copy: 5000
24/01/16 10:10:10 INFO tools.DistCp: Total bytes to copy: 107374182400
24/01/16 10:30:00 INFO tools.DistCp: Copy completed: 5000 files, 100GB
3.4 数据恢复操作
3.4.1 从快照恢复单个文件
hdfs dfs -rm /bigdata/warehouse/fgedu/ods/user_info.parquet
# 从快照恢复
hdfs dfs -cp /bigdata/warehouse/fgedu/.snapshot/daily_backup_20240116/ods/user_info.parquet /bigdata/warehouse/fgedu/ods/
# 验证恢复结果
hdfs dfs -ls /bigdata/warehouse/fgedu/ods/user_info.parquet
Deleted /bigdata/warehouse/fgedu/ods/user_info.parquet
# 从快照恢复成功
# 验证文件存在
-rw-r–r– 3 fgedu fgedu 536870912 2024-01-16 10:15 /bigdata/warehouse/fgedu/ods/user_info.parquet
3.4.2 从快照恢复整个目录
hdfs dfs -rm -r /bigdata/warehouse/fgedu/dwd
# 从快照恢复目录
hdfs dfs -cp /bigdata/warehouse/fgedu/.snapshot/daily_backup_20240116/dwd /bigdata/warehouse/fgedu/
# 验证恢复结果
hdfs dfs -ls /bigdata/warehouse/fgedu/dwd
Deleted /bigdata/warehouse/fgedu/dwd
# 从快照恢复成功
# 验证目录内容
Found 10 items
-rw-r–r– 3 fgedu fgedu 107374182 2024-01-16 10:20 /bigdata/warehouse/fgedu/dwd/order_detail.parquet
-rw-r–r– 3 fgedu fgedu 53687091 2024-01-16 10:20 /bigdata/warehouse/fgedu/dwd/user_detail.parquet
…
Part04-生产案例与实战讲解
4.1 误删除数据恢复案例
数据误删除是生产环境最常见的故障。更多视频教程www.fgedu.net.cn 以下是完整的误删除恢复案例。
# 1. 确认删除的文件
hdfs dfs -ls /bigdata/warehouse/fgedu/ods/ | grep “deleted”
# 2. 查看可用快照
hdfs dfs -ls /bigdata/warehouse/fgedu/.snapshot/
# 3. 从最近的快照恢复
hdfs dfs -cp /bigdata/warehouse/fgedu/.snapshot/daily_20240116_100500/ods/important_data.parquet /bigdata/warehouse/fgedu/ods/
# 文件不存在
# 可用快照列表
Found 3 items
drwxr-xr-x – hdfs hdfs 0 2024-01-15 10:00 /bigdata/warehouse/fgedu/.snapshot/daily_20240115_100000
drwxr-xr-x – hdfs hdfs 0 2024-01-16 10:00 /bigdata/warehouse/fgedu/.snapshot/daily_20240116_100000
drwxr-xr-x – hdfs hdfs 0 2024-01-16 10:05 /bigdata/warehouse/fgedu/.snapshot/daily_20240116_100500
# 恢复成功
# 验证文件
-rw-r–r– 3 fgedu fgedu 1073741824 2024-01-16 10:25 /bigdata/warehouse/fgedu/ods/important_data.parquet
4.2 数据版本回退案例
数据版本回退用于处理数据被错误修改的情况。学习交流加群风哥微信: itpux-com
# 1. 查看当前数据
hdfs dfs -cat /bigdata/warehouse/fgedu/config/app_config.json
# 2. 查看快照中的数据
hdfs dfs -cat /bigdata/warehouse/fgedu/.snapshot/daily_20240115_100000/config/app_config.json
# 3. 回退数据
hdfs dfs -cp -f /bigdata/warehouse/fgedu/.snapshot/daily_20240115_100000/config/app_config.json /bigdata/warehouse/fgedu/config/
{“version”:”2.0″,”setting”:”wrong_value”}
# 快照数据(正确)
{“version”:”1.0″,”setting”:”correct_value”}
# 回退成功
# 验证回退结果
hdfs dfs -cat /bigdata/warehouse/fgedu/config/app_config.json
{“version”:”1.0″,”setting”:”correct_value”}
4.3 跨集群备份恢复案例
4.3.1 异地备份实施
#!/bin/bash
# cross_cluster_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
DATE=$(date +%Y%m%d)
SRC_CLUSTER=”hdfs://fgedu01.net.cn:8020″
DST_CLUSTER=”hdfs://backup-cluster.net.cn:8020″
# 执行增量备份
hadoop distcp -update -skipcrccheck -bandwidth 100 \
${SRC_CLUSTER}/bigdata/warehouse/fgedu \
${DST_CLUSTER}/backup/fgedu/${DATE}
# 验证备份完整性
hdfs dfs -ls ${DST_CLUSTER}/backup/fgedu/${DATE} | wc -l
24/01/16 11:00:00 INFO tools.DistCp: Starting incremental backup
24/01/16 11:00:05 INFO tools.DistCp: Source: hdfs://fgedu01.net.cn:8020/bigdata/warehouse/fgedu
24/01/16 11:00:10 INFO tools.DistCp: Destination: hdfs://backup-cluster.net.cn:8020/backup/fgedu/20240116
24/01/16 11:30:00 INFO tools.DistCp: Backup completed: 5000 files, 100GB
# 验证结果
5000
4.3.2 从异地备份恢复
hadoop distcp -update \
hdfs://backup-cluster.net.cn:8020/backup/fgedu/20240116 \
hdfs://fgedu01.net.cn:8020/bigdata/warehouse/fgedu_restored
# 验证恢复数据
hdfs dfs -ls /bigdata/warehouse/fgedu_restored/
24/01/16 12:00:00 INFO tools.DistCp: Starting restore from backup
24/01/16 12:30:00 INFO tools.DistCp: Restore completed: 5000 files
# 验证恢复结果
Found 4 items
drwxr-xr-x – fgedu fgedu 0 2024-01-16 12:30 /bigdata/warehouse/fgedu_restored/ods
drwxr-xr-x – fgedu fgedu 0 2024-01-16 12:30 /bigdata/warehouse/fgedu_restored/dwd
drwxr-xr-x – fgedu fgedu 0 2024-01-16 12:30 /bigdata/warehouse/fgedu_restored/dws
drwxr-xr-x – fgedu fgedu 0 2024-01-16 12:30 /bigdata/warehouse/fgedu_restored/ads
Part05-风哥经验总结与分享
5.1 快照管理最佳实践
在实际生产环境中,快照管理需要注意以下几点:from bigdata视频:www.itpux.com
1. 关键目录必须启用快照功能
2. 制定合理的快照保留策略
3. 定期清理过期快照,避免占用过多空间
4. 快照名称要有意义,便于识别
5. 重要操作前创建快照
5.2 备份恢复经验总结
5.2.1 备份策略建议
#!/bin/bash
# comprehensive_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
DATE=$(date +%Y%m%d)
# 1. 创建快照
hdfs dfs -createSnapshot /bigdata/warehouse/fgedu daily_${DATE}
# 2. 导出元数据
hdfs dfsadmin -metasave meta_${DATE}.txt
# 3. 跨集群备份
hadoop distcp -update /bigdata/warehouse/fgedu hdfs://backup-cluster/backup/fgedu/${DATE}
# 4. 记录备份日志
echo “${DATE}: Backup completed successfully” >> /bigdata/logs/backup.log
Created snapshot /bigdata/warehouse/fgedu/.snapshot/daily_20240116
Meta data saved to meta_20240116.txt
DistCp completed: 5000 files, 100GB
20240116: Backup completed successfully
5.2.2 恢复演练清单
– 确认快照可用性
– 验证快照数据完整性
– 测试单文件恢复
– 测试目录恢复
– 测试跨集群恢复
– 记录恢复时间
#!/bin/bash
# recovery_drill.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== HDFS Recovery Drill ===”
echo “Date: $(date)”
# 测试快照恢复
START_TIME=$(date +%s)
hdfs dfs -cp /bigdata/warehouse/fgedu/.snapshot/daily_20240116/ods/test.parquet /bigdata/warehouse/fgedu/ods/test_restored.parquet
END_TIME=$(date +%s)
echo “Snapshot recovery time: $((END_TIME-START_TIME)) seconds”
# 验证数据一致性
ORIG_SIZE=$(hdfs dfs -du /bigdata/warehouse/fgedu/.snapshot/daily_20240116/ods/test.parquet | awk ‘{print $1}’)
REST_SIZE=$(hdfs dfs -du /bigdata/warehouse/fgedu/ods/test_restored.parquet | awk ‘{print $1}’)
if [ “${ORIG_SIZE}” -eq “${REST_SIZE}” ]; then
echo “Data integrity check: PASSED”
else
echo “Data integrity check: FAILED”
fi
=== HDFS Recovery Drill ===
Date: Mon Jan 16 12:30:00 CST 2024
Snapshot recovery time: 5 seconds
Data integrity check: PASSED
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
