在 CentOS 上配置 HDFS 备份,一般可以从**系统层(快照/拷贝)和HDFS 自身机制(副本/DistCp/快照)**两个维度来做。下面按常见场景给你一套实用配置思路。
HDFS 默认就有副本机制,先确认副本数:
hdfs dfsadmin -report
修改副本数(如改为 3):
<!-- hdfs-site.xml -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
对已有数据补副本:
hdfs dfs -setrep -R 3 /
适合误删恢复。
启用快照:
hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data snap_20260121
查看快照:
hdfs dfs -ls /data/.snapshot
恢复:
hdfs dfs -cp /data/.snapshot/snap_20260121/file /data/
适合异地/灾备。
hadoop distcp hdfs://nn1:9000/data hdfs://nn2:9000/backup/data
可加参数:
hadoop distcp -update -delete hdfs://src hdfs://dst
可配合 crontab 定时执行。
NameNode 数据目录:
/etc/hadoop/hdfs-site.xml
# dfs.namenode.name.dir
手动备份:
cp -r /dfs/nn /backup/nn_$(date +%F)
建议:
rsync -avz /dfs/nn/ backup@backup-server:/hdfs_backup/nn/
如果是 XFS/EXT4:
lvcreate --size 10G --snapshot --name hdfs_snap /dev/vg/hdfs
crontab -e
0 2 * * * /usr/bin/hadoop distcp hdfs://localhost:9000/data hdfs://backup:9000/backup/data
0 3 * * * /usr/bin/rsync -az /dfs/nn/ backup@remote:/hdfs_backup/nn/
如果你能告诉我:
我可以给你一份可直接用的配置文件 + 脚本。