在 Linux 环境下使用 Hadoop 进行数据备份,常见方式有HDFS 自身机制、跨集群复制工具和第三方/手动备份方案。下面按实用程度给你一个系统说明。
Hadoop 本身通过 replication 保证数据安全:
hdfs dfs -setrep -R 3 /user/data
查看副本数:
hdfs dfs -stat %r /user/data
HDFS 支持目录级快照,适合防误删。
hdfs dfsadmin -allowSnapshot /user/data
hdfs dfs -createSnapshot /user/data snap_20260121
恢复:
hdfs dfs -cp /user/data/.snapshot/snap_20260121 /user/data_restore
列出快照:
hdfs dfs -ls /user/data/.snapshot
用于 集群间数据复制
hadoop distcp hdfs://namenode1:8020/user/data hdfs://namenode2:8020/backup/data
常用参数:
hadoop distcp -update -delete source target
-update:只同步变化-delete:删除目标多余文件✅ 适合:
将 HDFS 数据导出到 Linux 本地或 NFS:
hdfs dfs -get /user/data /backup/data
或反向恢复:
hdfs dfs -put /backup/data /user/data
⚠ 不适合超大数据量
核心目录:
$HADOOP_HOME/data/dfs/name
备份方式:
cp -r $HADOOP_HOME/data/dfs/name /backup/nn_meta
或使用 NFS 挂载目录
hdfs dfsadmin -fetchImage /backup/fsimage
0 2 * * * hadoop distcp hdfs://nn1:8020/data hdfs://nn2:8020/backup
#!/bin/bash
DATE=$(date +%F)
hadoop distcp hdfs://nn1:8020/data hdfs://nn2:8020/backup/$DATE
| 场景 | 推荐方式 |
|---|---|
| 防误删 | Snapshot |
| 节点故障 | Replication |
| 集群灾备 | distcp |
| 审计/归档 | 本地 + 异地 |
| 元数据 | 定期 fsimage |
如果你愿意,可以告诉我:
我可以给你一套可直接用的备份脚本方案。