在 CentOS 上备份 HDFS 数据,常见做法取决于你的集群规模、数据量和恢复需求。下面按由简单到专业给你一套完整方案。
distcp 备份(推荐 ✅)hadoop distcp hdfs://namenode:8020/source/path hdfs://namenode:8020/backup/path
hadoop distcp \
hdfs://source-nn:8020/source/path \
hdfs://backup-nn:8020/backup/path
✅ 优点:
-update -append)✅ 增量备份示例:
hadoop distcp -update -append /source /backup
hdfs dfs 命令备份(简单但不推荐大数据量)hdfs dfs -cp /source/path /backup/path
hdfs dfs -get /source/path /data/backup/
⚠️ 缺点:
snapshot(快照备份,轻量级 ✅)hdfs dfsadmin -allowSnapshot /source/path
hdfs dfs -createSnapshot /source/path backup_$(date +%F)
hdfs dfs -ls /source/path/.snapshot
hdfs dfs -cp /source/path/.snapshot/backup_2025-01-01 /restore/path
✅ 优点:
hdfs dfs -get /source/path /backup/local/
tar -czvf hdfs_backup.tar.gz /backup/local/
0 2 * * * hdfs dfs -get /data /backup/$(date +\%F)
⚠️ 注意:
# 备份 fsimage 和 edits
cp /dfs/nn/current/fsimage_* /backup/nn/
cp /dfs/nn/current/edits_* /backup/nn/
| 场景 | 推荐方案 |
|---|---|
| 防止误删 | HDFS Snapshot |
| 定期全量备份 | distcp |
| 跨机房容灾 | distcp |
| 快速恢复 | Snapshot |
| 归档冷数据 | 本地 / NAS |
#!/bin/bash
DATE=$(date +%F)
hadoop distcp -update -append \
hdfs://namenode:8020/data \
hdfs://namenode:8020/backup/data_$DATE
chmod +x backup_hdfs.sh
可以告诉我:
我可以帮你定制一套完整备份方案 + 脚本 + 恢复流程。