在 CentOS 上备份 HDFS 数据,常见做法有几种,取决于你是整集群备份、单目录备份,还是容灾级别备份。下面按实用场景给你讲。
hdfs dfs 命令直接备份(最常用)hdfs dfs -get /user/hadoop/data /backup/hdfs_data
适合:
恢复:
hdfs dfs -put /backup/hdfs_data /user/hadoop/data
hdfs dfs -cp /user/hadoop/data /backup/hdfs_data_$(date +%F)
distcp(分布式拷贝)hadoop distcp hdfs://nn1:8020/source hdfs://nn2:8020/backup
特点:
-diff)示例(限速):
hadoop distcp -bandwidth 10 hdfs://nn1:8020/data hdfs://nn2:8020/backup
hdfs dfsadmin -allowSnapshot /user/hadoop/data
hdfs dfs -createSnapshot /user/hadoop/data snapshot_$(date +%F)
hdfs dfs -ls /user/hadoop/data/.snapshot
hdfs dfs -deleteSnapshot /user/hadoop/data snapshot_20260101
✅ 快照几乎不占空间,适合时间点备份
dfs.namenode.name.dir通常在:
/dfs/nn
手动或脚本拷贝:
cp -r /dfs/nn /backup/nn_$(date +%F)
fsimagehdfs dfsadmin -fetchImage /backup/fsimage
hadoop distcp hdfs://nn:8020/data s3a://bucket/backup
0 2 * * * /usr/bin/hdfs dfs -createSnapshot /user/hadoop/data snapshot_$(date +\%F)
✅ 日常:HDFS Snapshot
✅ 周级:distcp 到备份集群
✅ 月级:NameNode 元数据备份
如果你能告诉我:
我可以给你一套具体可执行的备份方案。