温馨提示×

centos如何备份hdfs数据

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

CentOS 上备份 HDFS 数据,常见做法有几种,取决于你是整集群备份目录级备份还是灾备。下面按使用频率从高到低说明。


一、使用 distcp 备份(最常用,推荐)

1. 备份到另一个 HDFS 集群(异地/灾备)

hadoop distcp hdfs://namenode1:8020/source/path hdfs://namenode2:8020/backup/path

示例:

hadoop distcp hdfs://cdh1:8020/user/hive/warehouse hdfs://backup01:8020/backup/hive_warehouse

✅ 优点:

  • 支持增量(加 -update -diff
  • 跨集群、跨版本
  • 生产环境标准方案

2. 本地 HDFS 内部备份

hadoop distcp /data/logs /backup/data/logs_20260101

二、使用 hdfs dfs -get 备份到 CentOS 本地磁盘

适合小数据量或临时备份。

hdfs dfs -get /user/hive/warehouse /data/backup/hive_warehouse

打包压缩:

tar -zcvf hive_backup.tar.gz /data/backup/hive_warehouse

⚠️ 注意:

  • 本地磁盘空间要足够
  • 不适合 TB 级数据

三、使用 hdfs dfsadmin -fetchImage(只备份元数据)

只备份 NameNode 元数据(不包含真实数据)。

hdfs dfsadmin -fetchImage /data/backup/nn_image

常用于:

  • 灾难恢复
  • 审计

四、使用快照(Snapshot)备份(HDFS 原生)

1. 开启快照

hdfs dfs -allowSnapshot /data

2. 创建快照

hdfs dfs -createSnapshot /data snapshot_20260101

3. 恢复快照

hdfs dfs -cp /data/.snapshot/ssnapshot_20260101 /data/restore

✅ 适合:

  • 误删恢复
  • 短时间版本保留

五、使用 Hive / Spark 数据备份(常见场景)

Hive 表备份

hive \
  -e "EXPORT TABLE db.table TO '/backup/hive/db_table'"

恢复:

hive -e "IMPORT TABLE db.table FROM '/backup/hive/db_table'"

六、自动化备份(CentOS 定时任务)

crontab -e

示例(每天 2 点备份):

0 2 * * * /usr/bin/hadoop distcp /data /backup/data_$(date +\%F)

七、备份策略建议

场景 推荐方式
跨集群灾备 distcp
误删恢复 Snapshot
小数据临时备份 get + tar
元数据保护 fetchImage
Hive 数仓 EXPORT/IMPORT

如果你能告诉我:

  • HDFS 版本(CDH / HDP / 社区版)
  • 数据量大小
  • 是否跨集群
  • 是否包含 Hive / HBase

我可以给你一套可直接用的备份脚本

0