在 Linux 环境下对 Hadoop 进行备份,通常分为 HDFS 数据备份、元数据(NameNode)备份 和 配置文件/集群备份 三类。下面按常见、实用的方法来说明。
hdfs dfs -distcp(最常用)适合集群间或同集群不同目录备份。
hdfs dfs -distcp hdfs://namenode1:8020/source hdfs://namenode2:8020/backup
同集群备份:
hdfs dfs -distcp /user/data /backup/user_data_$(date +%F)
✅ 优点:高效、支持增量(结合 -update)
hdfs dfs -distcp -update /src /dst
hdfs dfs -copyToLocal适合小数据量备份到本地磁盘或 NFS。
hdfs dfs -copyToLocal /user/data /data/backup/
恢复:
hdfs dfs -copyFromLocal /data/backup/user/data /user/
HDFS 原生支持快照,适合误操作恢复。
hdfs dfsadmin -allowSnapshot /user/data
hdfs dfs -createSnapshot /user/data backup_20260121
查看:
hdfs dfs -ls /user/data/.snapshot
删除快照:
hdfs dfs -deleteSnapshot /user/data backup_20260121
dfs.namenode.name.dir停止 NameNode 后备份目录:
cp -r /data/hadoop/dfs/name /backup/name_$(date +%F)
或直接打包:
tar czf nn_backup.tar.gz /data/hadoop/dfs/name
确保:
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/data/hadoop/dfs/namesecondary</value>
</property>
定期保存 fsimage 和 edits。
tar czf hadoop_conf_backup.tar.gz $HADOOP_HOME/etc/hadoop
建议备份:
core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml0 2 * * * hdfs dfs -distcp -update /data hdfs://backup-cluster:8020/backup
hdfs dfs -distcp /data s3a://bucket/backup
hdfs dfs -cp /backup/user_data_20260121 /user/data
name 目录✅ 日常:快照 + distcp
✅ 周/月:NameNode + 配置备份
✅ 重要集群:异地/跨集群备份
如果你能说明:
我可以给你一套具体可执行的备份脚本。