在 Debian 下对 Hadoop 进行备份,通常需要结合 HDFS 自身机制 和 操作系统级备份。下面按常见场景给你一个清晰、可操作的方案。
HDFS 默认就有副本机制:
hdfs dfsadmin -report
查看副本数:
hdfs dfs -ls /path
修改副本数(示例设为 3):
hdfs dfs -setrep -R 3 /user
✅ 适合容错,但不是“备份”(节点全挂仍可能丢)
HDFS 支持 目录快照
hdfs dfsadmin -allowSnapshot /user/data
hdfs dfs -createSnapshot /user/data snapshot_20260121
hdfs lsSnapshots /user/data
hdfs dfs -cp /user/data/.snapshot/snapshot_20260121 /user/data_restore
✅ 轻量、快速、适合误删恢复
hadoop distcp hdfs://namenode1:8020/user/data hdfs://namenode2:8020/backup/data
也可备份到本地:
hadoop distcp hdfs://localhost:8020/user/data file:///data/backup/
✅ 适合:
默认路径:
/etc/hadoop/
/hadoop/dfs/name/
手动备份:
cp -r /hadoop/dfs/name /backup/namenode_$(date +%F)
确保:
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/hadoop/dfs/namesecondary</value>
</property>
tar czf hadoop-conf-$(date +%F).tar.gz /etc/hadoop
mysqldump -u root -p hive > hive.sql
| 类型 | 频率 | 方式 |
|---|---|---|
| HDFS 快照 | 每天 | createSnapshot |
| DistCp 冷备 | 每周 | 跨节点 |
| NameNode 元数据 | 每天 | cp |
| 配置文件 | 每次变更 | tar |
❌ 只备份 DataNode(没用)
❌ 忽略 fsimage
❌ 快照不能替代异地备份
如果你愿意,我可以:
你现在是 单机还是集群?