在 CentOS 上备份 HDFS 常见有几种方式,取决于你是想备份数据本身,还是备份元数据(NameNode),或者是整集群容灾。下面按常用场景给你梳理一下。
distcp 跨集群备份(推荐)适合:集群间数据备份、迁移
hadoop distcp hdfs://namenode1:8020/source/path hdfs://namenode2:8020/backup/path
示例(本地集群备份到备份集群):
hadoop distcp hdfs://centos1:8020/user/hive/warehouse hdfs://backup1:8020/backup/hive
✅ 优点
hdfs dfs -copyToLocal 备份到本地磁盘适合:小数据量、临时备份
hdfs dfs -get /user/data /data/backup/
或:
hdfs dfs -copyToLocal /user/data /backup/
⚠️ 不建议大数据量使用(慢、占用本地空间)
hdfs dfs -get /user/data /local/backup/
rsync -avz /local/backup/ backup@remote:/hdfs_backup/
默认路径(看你配置):
/etc/hadoop/hdfs-site.xml
常见路径:
/dfs/nn
/var/lib/hadoop-hdfs/cache/hdfs/dfs/name
备份命令:
tar -zcvf nn_backup_$(date +%F).tar.gz /dfs/nn
⚠️ 必须在 SafeMode 或低峰期操作
hdfs dfsadmin -fetchImage只备份 fsimage(元数据镜像):
hdfs dfsadmin -fetchImage /backup/namenode
hdfs dfsadmin -allowSnapshot /user/data
hdfs dfs -createSnapshot /user/data backup_20260101
hdfs lsSnapshottableDir
✅ 快照:
0 2 * * * /usr/bin/hadoop distcp hdfs://centos1:8020/user/data hdfs://backup1:8020/backup/data >> /var/log/hdfs_backup.log
| 场景 | 推荐方式 |
|---|---|
| 集群容灾 | distcp |
| 误删恢复 | HDFS 快照 |
| 元数据保护 | fsimage + nn 目录 |
| 小数据 | copyToLocal |
如果你能告诉我:
我可以直接给你一套 可落地的备份方案 + 脚本。