在 Linux 上备份 Hadoop 通常需要从 元数据(NameNode)、数据(HDFS 数据块)、配置文件 和 业务数据 几个层面来考虑。下面给你一套实用、可落地的备份方案。
dfs.namenode.name.dirfsimage + edits$HADOOP_HOME/etc/hadoopcore-site.xml, hdfs-site.xml, yarn-site.xml 等$HADOOP_HOME/logs# 停止 NameNode
stop-dfs.sh
# 备份 name 目录
tar -czvf namenode-backup-$(date +%F).tar.gz \
$HADOOP_HOME/data/dfs/name
# 启动
start-dfs.sh
✅ 适合:小集群 / 测试环境
# 强制生成 fsimage
hdfs dfsadmin -safemode enter
hdfs dfsadmin -saveNamespace
hdfs dfsadmin -ssafemode leave
# 备份
cp -r $HADOOP_HOME/data/dfs/name /backup/namenode-$(date +%F)
crontab -e
0 2 * * * hdfs dfsadmin -saveNamespace && \
tar -czf /backup/nn-$(date +%F).tar.gz $HADOOP_HOME/data/dfs/name
hadoop distcp hdfs://nn1:9000/user hdfs://backup-nn:9000/user_backup
✅ 适合:
hdfs dfs -get /user /backup/hdfs_user_$(date +%F)
hdfs dfsadmin -allowSnapshot /user
hdfs dfs -createSnapshot /user snapshot_20260121
✅ 轻量、秒级 ❌ 不是真正异地备份
tar -czf hadoop-conf-$(date +%F).tar.gz $HADOOP_HOME/etc/hadoop
建议和 NameNode 备份一起存
| 项目 | 方式 |
|---|---|
| NameNode 元数据 | saveNamespace + 定时备份 |
| HDFS 数据 | distcp 到备集群 |
| 配置 | tar 打包 |
| 频率 | 每天 / 每周 |
| 存储 | 异地 / 对象存储 |
如果你愿意,我可以:
你现在是 测试还是生产环境?