温馨提示×

linux hdfs怎么备份数据

小樊
50
2026-09-22 20:28:57
栏目: 智能运维

在 Linux 环境下对 HDFS(Hadoop Distributed File System) 进行数据备份,常见做法有几种,下面按常用程度和场景给你梳理一下。


一、使用 HDFS 自带命令备份(最常用)

1. HDFS → HDFS(同集群或跨集群)

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

或递归拷贝:

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

适合:

  • 临时备份
  • 同集群目录级备份

2. HDFS → 本地 Linux 文件系统

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

或批量:

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

适合:

  • 小数据量
  • 冷备份到磁盘/NFS

3. 本地 → HDFS 恢复

hdfs dfs -put /local/backup/path /hdfs/path

二、跨集群备份(推荐生产环境)

1. distcp(分布式拷贝,最推荐)

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

优点:

  • 并行传输
  • 支持大规模数据
  • 支持不同 Hadoop 版本

常用于:

  • 集群迁移
  • 异地容灾

三、使用快照(Snapshot)备份(轻量级)

HDFS 支持快照:

hdfs dfsadmin -allowSnapshot /data
hdfs dfs -createSnapshot /data snapshot_20260121

查看快照:

hdfs dfs -ls /data/.snapshot

恢复:

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

适合:

  • 防误删
  • 快速回滚

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

1. NameNode 元数据

# 在 NameNode 上
cp -r ${HADOOP_HOME}/dfs/name /backup/name_$(date +%F)

或定期:

hdfs dfsadmin -fetchImage /backup/image

⚠️ 只备份数据不备份元数据 = 无法恢复集群


五、结合 Linux 定时任务(自动化)

crontab -e

示例(每天 2 点备份):

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

六、常见备份策略建议

场景 推荐方式
误删防护 HDFS Snapshot
集群容灾 distcp
冷备份 get + 磁盘/NFS
定期归档 distcp + crontab
元数据 fsimage + name dir

如果你能告诉我:

  • 是 单集群还是多集群
  • 数据量大概多大
  • 是否要 自动定时

我可以帮你写一套可直接用的备份脚本。

0 踩