在 CentOS 上备份 HDFS(Hadoop 分布式文件系统),常见做法有几种,取决于你是整机/集群备份、数据备份还是元数据备份。下面按实用场景给你一个清晰总结。
distcp 备份 HDFS 数据(推荐)hadoop distcp hdfs://namenode1:8020/source hdfs://namenode2:8020/backup
hadoop distcp hdfs:///data hdfs:///data_backup_$(date +%F)
✅ 优点:
-update -diff)hadoop fs -get /user/hadoop/data /backup/hdfs_data
hadoop fs -put /backup/hdfs_data /user/hadoop/data
⚠ 注意:
HDFS 数据丢了可以恢复,但 NameNode 元数据丢了就完了。
默认路径(看你 hdfs-site.xml):
/etc/hadoop/hdfs-site.xml
通常包含:
/dfs/name
备份命令:
tar czf namenode_metadata_$(date +%F).tar.gz /dfs/name
确保:
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/dfs/namesecondary</value>
</property>
hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data snapshot_$(date +%F)
hdfs dfs -ls /data/.snapshot
✅ 适合:
crontab -e
示例(每天 2 点备份):
0 2 * * * /usr/bin/hadoop distcp hdfs:///data hdfs:///backup/data_$(date +\%F)
| 场景 | 推荐方式 |
|---|---|
| 集群间备份 | distcp |
| 本地备份 | get/put |
| 元数据 | 备份 name.dir |
| 快速回滚 | snapshot |
| 自动备份 | crontab |
如果你能告诉我:
我可以给你一套具体可执行的备份脚本。