在 Linux 环境下对 HDFS(Hadoop Distributed File System) 进行数据备份,常见做法有几种,下面按常用程度和场景给你梳理一下。
hdfs dfs -cp /source/path /backup/path
或递归拷贝:
hdfs dfs -cp -f /source/path /backup/path
适合:
hdfs dfs -get /hdfs/path /local/backup/path
或批量:
hdfs dfs -get /user/hive/warehouse /data/backup/
适合:
hdfs dfs -put /local/backup/path /hdfs/path
hadoop distcp hdfs://namenode1:8020/source \
hdfs://namenode2:8020/backup
优点:
常用于:
HDFS 支持快照:
hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data snapshot_20260121
查看快照:
hdfs dfs -ls /data/.snapshot
恢复:
hdfs dfs -cp /data/.snapshot/snapshot_20260121 /data/restore
适合:
# 在 NameNode 上
cp -r ${HADOOP_HOME}/dfs/name /backup/name_$(date +%F)
或定期:
hdfs dfsadmin -fetchImage /backup/image
⚠️ 只备份数据不备份元数据 = 无法恢复集群
crontab -e
示例(每天 2 点备份):
0 2 * * * hdfs dfs -get /user/data /backup/$(date +\%F)
| 场景 | 推荐方式 |
|---|---|
| 误删防护 | HDFS Snapshot |
| 集群容灾 | distcp |
| 冷备份 | get + 磁盘/NFS |
| 定期归档 | distcp + crontab |
| 元数据 | fsimage + name dir |
如果你能告诉我:
我可以帮你写一套可直接用的备份脚本。