温馨提示×

hdfs在centos咋备份数据

小樊
39
2026-09-21 16:38:00
栏目: 智能运维

在 CentOS 上备份 HDFS 数据,常见做法有几种,下面按实用程度给你梳理一下,从简单到专业。


一、最常用:用 distcp 备份到另一个 HDFS(推荐)

适合: 集群间备份、容灾

hadoop distcp hdfs://namenode1:8020/user hdfs://namenode2:8020/backup/user

说明:

  • namenode1:源集群
  • namenode2:备份集群
  • 支持增量(加 -update -delete

增量备份示例:

hadoop distcp -update -delete \
hdfs://namenode1:8020/user \
hdfs://namenode2:8020/backup/user

✅ 优点:官方方案、稳定、可跨集群
❌ 缺点:需要至少两个 HDFS


二、备份到本地磁盘 / NFS(CentOS 本地)

适合: 小数据量、临时备份

hdfs dfs -get /user /data/backup/user

或打包:

hdfs dfs -get /user /tmp/user && tar czf user.tar.gz -C /tmp user

恢复:

hdfs dfs -put /data/backup/user /user

✅ 简单
❌ 大数据量慢、占用本地空间


三、用 HDFS 快照(Snapshot)备份

适合: 短时间内一致性备份

  1. 允许快照:
hdfs dfsadmin -allowSnapshot /user
  1. 创建快照:
hdfs dfs -createSnapshot /user backup_20260121
  1. 查看:
hdfs lsSnapshots /user
  1. 恢复:
hdfs dfs -cp /user/.snapshot/backup_20260121 /user_restore

✅ 不占额外空间(仅差量)
❌ 不是真正“异地备份”


四、NameNode 元数据备份(很重要)

HDFS 数据 ≠ 元数据

备份 dfs.namenode.name.dir

cp -r /data/hadoop/dfs/name /backup/name_$(date +%F)

或手动 checkpoint

hdfs dfsadmin -fetchImage /backup

✅ 防止 NameNode 挂了全丢


五、用脚本 + crontab 自动备份(CentOS 实战)

# /root/backup_hdfs.sh
#!/bin/bash
DATE=$(date +%F)
hadoop distcp -update -delete \
hdfs://localhost:8020/user \
hdfs://backup:8020/backup/user_$DATE

加执行权限:

chmod +x /root/backup_hdfs.sh

定时任务:

crontab -e
0 2 * * * /root/backup_hdfs.sh

六、企业级方案(了解)

  • HDFS → S3 / OSS(对象存储)
  • CDH / HDP 的 Replication
  • Ranger + 快照策略
  • Elasticsearch / HBase 单独备份

建议组合(最佳实践)

小公司 / 测试环境

快照 + 本地 get

生产环境

distcp 到备集群 + NameNode 元数据备份


如果你愿意,可以告诉我:

  • 单节点还是集群?
  • HDFS 数据量大概多大?
  • 是想本地备份还是异地?

我可以直接帮你写一套可用备份方案 + 脚本

0