温馨提示×

CentOS怎么备份HDFS数据

小樊
43
2026-08-05 01:17:43
栏目: 智能运维

CentOS 上备份 HDFS 数据,常见做法取决于你的集群规模、数据量和恢复需求。下面按由简单到专业给你一套完整方案。


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

适用场景

  • 跨集群备份
  • 同集群不同目录
  • 定期全量 / 增量备份

1️⃣ 同集群备份

hadoop distcp hdfs://namenode:8020/source/path hdfs://namenode:8020/backup/path

2️⃣ 跨集群备份

hadoop distcp \
hdfs://source-nn:8020/source/path \
hdfs://backup-nn:8020/backup/path

✅ 优点:

  • 并行复制,速度快
  • 支持增量(-update -append
  • 官方推荐

✅ 增量备份示例:

hadoop distcp -update -append /source /backup

二、使用 hdfs dfs 命令备份(简单但不推荐大数据量)

复制目录

hdfs dfs -cp /source/path /backup/path

导出到本地

hdfs dfs -get /source/path /data/backup/

⚠️ 缺点:

  • 单线程
  • 不适合大规模数据
  • 本地磁盘容易成为瓶颈

三、使用 snapshot(快照备份,轻量级 ✅)

适用场景

  • 防止误删
  • 快速恢复
  • 不需要额外存储空间(只存差异)

1️⃣ 开启快照

hdfs dfsadmin -allowSnapshot /source/path

2️⃣ 创建快照

hdfs dfs -createSnapshot /source/path backup_$(date +%F)

3️⃣ 查看快照

hdfs dfs -ls /source/path/.snapshot

4️⃣ 恢复数据

hdfs dfs -cp /source/path/.snapshot/backup_2025-01-01 /restore/path

✅ 优点:

  • 秒级创建
  • 几乎不占空间
  • 非常适合定时备份

四、备份到本地磁盘 / NAS(冷备份)

1️⃣ 导出数据

hdfs dfs -get /source/path /backup/local/

2️⃣ 打包压缩

tar -czvf hdfs_backup.tar.gz /backup/local/

3️⃣ 可结合 crontab 定时执行

0 2 * * * hdfs dfs -get /data /backup/$(date +\%F)

⚠️ 注意:

  • 本地磁盘必须够大
  • 不适合 TB 级数据

五、企业级方案(生产环境)

✅ HDFS HA + NameNode 元数据备份

# 备份 fsimage 和 edits
cp /dfs/nn/current/fsimage_* /backup/nn/
cp /dfs/nn/current/edits_* /backup/nn/

✅ 使用 Cloudera / Ambari

  • 自动快照
  • 定时 distcp
  • 集成 Hive / HBase 备份

六、备份策略建议(最佳实践)

场景 推荐方案
防止误删 HDFS Snapshot
定期全量备份 distcp
跨机房容灾 distcp
快速恢复 Snapshot
归档冷数据 本地 / NAS

七、示例:每日自动备份脚本

#!/bin/bash
DATE=$(date +%F)
hadoop distcp -update -append \
hdfs://namenode:8020/data \
hdfs://namenode:8020/backup/data_$DATE
chmod +x backup_hdfs.sh

八、你需要我进一步帮你?

可以告诉我:

  1. ✅ 单集群还是多集群?
  2. ✅ 数据量多大(GB/TB)?
  3. ✅ 是否使用 CDH / HDP / 原生 Hadoop?
  4. ✅ 是否需要自动定时备份?

我可以帮你定制一套完整备份方案 + 脚本 + 恢复流程

0