在 CentOS 上备份 HDFS,常见做法取决于你是备份数据本身、元数据,还是整个集群。下面按常见场景给你一个完整、实用的说明。
distcp(官方推荐,跨集群/同集群)适合:
hadoop distcp hdfs://namenode1:8020/user/data hdfs://namenode2:8020/backup/user_data_$(date +%F)
优点
-update)hadoop distcp -update -skipcrccheck /user/data /backup/user_data
hdfs dfs -cp适合小数据量或临时备份
hdfs dfs -cp /user/data /backup/data_$(date +%F)
⚠️ 不推荐用于大规模数据
hdfs dfs -get /user/data /data/backup/hdfs_data
或打包:
hdfs dfs -get /user/data - | gzip > hdfs_data.tar.gz
HDFS 元数据目录一般在:
/etc/hadoop/conf/hdfs-site.xml
查看:
dfs.namenode.name.dir
例如:
/dfs/nn
cp -a /dfs/nn /backup/nn_$(date +%F)
hdfs dfsadminhdfs dfsadmin -safemode enter
hdfs dfsadmin -saveNamespace
hdfs dfsadmin -safemode leave
然后备份目录:
tar czf nn_backup.tar.gz /dfs/nn
tar czf hadoop_conf_backup.tar.gz /etc/hadoop/conf
或:
/etc/hadoop
#!/bin/bash
DATE=$(date +%F)
hadoop distcp /user/data /backup/user_data_$DATE
加入 crontab:
crontab -e
0 2 * * * /opt/scripts/backup_hdfs.sh
hdfs dfsadmin -allowSnapshot /user/data
hdfs dfs -createSnapshot /user/data backup_$(date +%F)
hdfs dfs -ls /user/data/.snapshot
✅ 优点:
| 场景 | 推荐方式 |
|---|---|
| 同集群备份 | distcp / snapshot |
| 跨集群容灾 | distcp |
| 元数据保护 | 定期备份 nn 目录 |
| 配置文件 | 版本控制 + 打包 |
| 冷备 | get + 压缩 |
hdfs dfsadmin -report
如果你愿意,可以告诉我:
我可以帮你设计一套 具体可执行的 HDFS 备份方案。