在 Debian 上备份 Hadoop,一般不是“备份整个 Hadoop”,而是分层备份。下面按“是否使用 Hadoop 自带机制”给你一个实用、可落地的方案,从最推荐到补充方案。
hdfs dfsadmin -allowSnapshot /user
hdfs dfs -createSnapshot /user snapshot_2026_01_21
hdfs dfs -ls /user/.snapshot
hdfs dfs -cp /user/.snapshot/snapshot_2026_01_21/important_file /user/
✅ 优点
❌ 缺点
distcp(推荐)hadoop distcp hdfs://namenode:9000/user /backup/hdfs/user_$(date +%F)
或备份到远程集群:
hadoop distcp hdfs://local/user hdfs://backup-cluster/backup/user
✅ 适合:
hdfs dfs -get /user /backup/hdfs/user
⚠️ 不推荐大数据量,仅适合小目录。
/etc/hadoop/
$HADOOP_HOME/etc/hadoop/
tar czf hadoop-conf-$(date +%F).tar.gz /etc/hadoop
scp hadoop-conf-*.tar.gz backup-server:/data/backup/
✅ 必须备份
core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml/var/lib/hadoop-hdfs/dfs/name
tar czf nn-meta-$(date +%F).tar.gz /var/lib/hadoop-hdfs/dfs/name
dfs.namenode.name.dir 多目录<property>
<name>dfs.namenode.name.dir</name>
<value>/data/nn1,/data/nn2</value>
</property>
✅ 多目录 = 实时冗余
rsync -avz /etc/hadoop/ /backup/hadoop-conf/
rsync -avz /var/lib/hadoop-hdfs/ /backup/hdfs-meta/
crontab -e
0 2 * * * rsync -avz /etc/hadoop /backup/
| 类型 | 工具 | 频率 |
|---|---|---|
| HDFS 数据 | Snapshot + distcp | 每天 |
| 配置文件 | tar + rsync | 每次变更 |
| NameNode 元数据 | 多目录 + 冷备 | 每天 |
| 异地备份 | scp / rsync | 每天 |
hdfs dfs -cp /backup/user /user
tar xf hadoop-conf-2026-01-21.tar.gz -C /
❌ 只备份数据,不备份配置
❌ 不备份 NameNode 元数据
❌ 快照当成了“永久备份”(快照不是复制)
❌ 在集群高负载时做全量拷贝
我可以直接给你 一套可执行的备份脚本 + crontab 配置。