温馨提示×

centos中hdfs如何备份

小樊
43
2026-09-15 14:49:20
栏目: 智能运维

CentOS 环境下,对 HDFS(Hadoop Distributed File System) 进行备份,常见方式有以下几种,按使用频率和可靠性从高到低说明:


一、使用 hdfs dfs -distcp 备份(最推荐)

1. 同集群不同目录备份

hdfs dfs -distcp hdfs://namenode:8020/source hdfs://namenode:8020/backup/source

2. 跨集群备份(常见容灾)

hdfs dfs -distcp hdfs://clusterA:8020/data hdfs://clusterB:8020/backup/data

优点

  • 官方推荐
  • 支持增量(-update -append
  • 可跨集群、跨版本

常用参数

-update       # 仅同步变化文件
-append       # 支持文件追加
-p            # 保留权限、属主、时间戳
-m 10         # 并发 map 数

二、使用 hdfs dfs -copyToLocal / -put(本地备份)

备份到本地磁盘

hdfs dfs -copyToLocal /user/hadoop/data /backup/hdfs_data

从本地恢复

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

注意

  • 本地磁盘空间必须足够
  • 不适合超大规模数据

三、使用 HDFS 快照(Snapshot)备份

1. 启用快照

hdfs dfsadmin -allowSnapshot /data

2. 创建快照

hdfs dfs -createSnapshot /data snapshot_20260121

3. 恢复快照

hdfs dfs -cp /data/.snapshot/snapshot_20260121/file /data/file

特点

  • 秒级创建
  • 不占用额外空间(仅记录差异)
  • 不能跨集群

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

1. 备份 dfs.namenode.name.dir

cp -r /data/hadoop/dfs/name /backup/namenode_name

2. 定期备份

tar czf nn_backup_$(date +%F).tar.gz /data/hadoop/dfs/name

建议

  • 每天备份
  • 异地保存

五、使用 HDFS Erasure Coding(不是备份,但防丢)

hdfs ec -enablePolicy -policy RS-6-3-1024k
hdfs ec -setPolicy -path /data -policy RS-6-3-1024k

六、生产环境推荐方案(组合)

日常备份

  • distcp 到备份集群(每日)

误操作防护

  • HDFS Snapshot

灾难恢复

  • NameNode 元数据异地备份

如果你能提供:

  • HDFS 版本
  • 是否单集群 / 多集群
  • 数据量和备份频率

我可以帮你写一套 CentOS 定时备份脚本(crontab + distcp)

0