温馨提示×

centos如何备份hdfs

小樊
54
2026-08-05 03:53:44
栏目: 智能运维

CentOS 上备份 HDFS,常见做法取决于你是备份数据本身元数据,还是整个集群。下面按常见场景给你一个完整、实用的说明。


一、备份 HDFS 数据(最常用)

✅ 方法 1:使用 distcp(官方推荐,跨集群/同集群)

适合:

  • 定期备份
  • 跨集群容灾
  • 大数据量
hadoop distcp hdfs://namenode1:8020/user/data hdfs://namenode2:8020/backup/user_data_$(date +%F)

优点

  • 支持增量(结合 -update
  • 并行、稳定
  • 可跨集群
hadoop distcp -update -skipcrccheck /user/data /backup/user_data

✅ 方法 2:使用 hdfs dfs -cp

适合小数据量或临时备份

hdfs dfs -cp /user/data /backup/data_$(date +%F)

⚠️ 不推荐用于大规模数据


✅ 方法 3:备份到本地文件系统(冷备)

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

或打包:

hdfs dfs -get /user/data - | gzip > hdfs_data.tar.gz

二、备份 HDFS 元数据(非常重要)

✅ 备份 NameNode 元数据

HDFS 元数据目录一般在:

/etc/hadoop/conf/hdfs-site.xml

查看:

dfs.namenode.name.dir

例如:

/dfs/nn

手动备份(停服或低峰期)

cp -a /dfs/nn /backup/nn_$(date +%F)

使用 hdfs dfsadmin

hdfs dfsadmin -safemode enter
hdfs dfsadmin -saveNamespace
hdfs dfsadmin -safemode leave

然后备份目录:

tar czf nn_backup.tar.gz /dfs/nn

三、备份 HDFS 配置(必须)

tar czf hadoop_conf_backup.tar.gz /etc/hadoop/conf

或:

/etc/hadoop

四、自动化备份(生产推荐)

示例:每天用 distcp 备份

#!/bin/bash
DATE=$(date +%F)
hadoop distcp /user/data /backup/user_data_$DATE

加入 crontab:

crontab -e
0 2 * * * /opt/scripts/backup_hdfs.sh

五、快照方式(HDFS Snapshot)

开启快照

hdfs dfsadmin -allowSnapshot /user/data

创建快照

hdfs dfs -createSnapshot /user/data backup_$(date +%F)

查看快照

hdfs dfs -ls /user/data/.snapshot

✅ 优点:

  • 秒级
  • 不占额外空间(仅增量)

六、常见备份策略建议

场景 推荐方式
同集群备份 distcp / snapshot
跨集群容灾 distcp
元数据保护 定期备份 nn 目录
配置文件 版本控制 + 打包
冷备 get + 压缩

七、注意事项(非常重要)

  1. 不要只备份数据,不备份 NameNode 元数据
  2. 备份前确认:
    hdfs dfsadmin -report
    
  3. 备份目录权限要保持一致
  4. 大集群建议 专用备份集群

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

  • ✅ 单集群还是多集群?
  • ✅ 是否生产环境?
  • ✅ 数据量级别(TB/PB)?

我可以帮你设计一套 具体可执行的 HDFS 备份方案

0