在 CentOS 上“备份 HDFS 数据”通常有多种方式,取决于你是要整体灾备、目录级备份还是元数据备份。下面按常见场景给你一个清晰、可落地的说明。
distcp(最常用、官方推荐)适合:集群间备份、跨机房容灾
hadoop distcp hdfs://namenode1:8020/source/path hdfs://namenode2:8020/backup/path
示例(本集群内备份):
hadoop distcp /user/hive/warehouse /backup/hive_warehouse_$(date +%F)
特点:
-update -append)-bandwidth)适合:误删恢复、短期备份
hdfs dfsadmin -allowSnapshot /user/data
hdfs dfs -createSnapshot /user/data snap_20260121
恢复:
hdfs dfs -cp /user/data/.snapshot/snap_20260121/file /user/data/
优点:
适合:冷备份、合规存档
hdfs dfs -get /data /backup/data_$(date +%F)
hadoop distcp /data s3a://bucket/backup/
适合:集群崩溃恢复
备份目录(默认):
/dfs/nn
手动备份:
cp -r /dfs/nn /backup/nn_$(date +%F)
或者使用:
hdfs dfsadmin -fetchImage /backup/nn_image
⚠️ 只备份数据不备份元数据 = 无法恢复
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/bin/hadoop distcp /user/data /backup/data_$(date +\%F)
| 场景 | 推荐方式 |
|---|---|
| 跨集群容灾 | distcp |
| 误删恢复 | HDFS 快照 |
| 合规存档 | distcp → 对象存储 |
| 集群恢复 | NN 元数据 + 数据备份 |
如果你愿意,可以告诉我:
我可以直接给你可执行的备份脚本。