温馨提示×

怎样备份linux hadoop数据

小樊
42
2026-09-13 15:57:40
栏目: 智能运维

在 Linux 上备份 Hadoop 数据,常见做法分为 HDFS 数据备份元数据和配置备份 两部分。下面按实用场景给你一个完整思路。


一、HDFS 数据备份(最核心)

1️⃣ 使用 distcp(官方推荐,适合集群间/跨机房)

hadoop distcp hdfs://namenode1:8020/user hdfs://namenode2:8020/user_backup

✅ 优点

  • 支持增量(-update -diff)
  • 支持不同集群
  • 可并行、可断点续传

常用参数:

hadoop distcp -update -delete \
  hdfs://src:8020/data \
  hdfs://dst:8020/data_bak

2️⃣ 使用 hdfs dfs -copyToLocal(单机备份)

hdfs dfs -get /user /backup/hdfs_user_$(date +%F)

hdfs dfs -copyToLocal /data /backup/data

⚠ 不适合 TB 级以上数据


3️⃣ 快照(Snapshot,轻量级备份)

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

恢复:

hdfs dfs -cp /user/.snapshot/snapshot_20260121 /user_restore

✅ 几乎零存储开销


4️⃣ 异地/云备份(对象存储)

hadoop distcp /user s3a://bucket/hdfs_backup/user

hdfs dfs -get /user /mnt/nas/hdfs_backup

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

1️⃣ 备份 NameNode 目录

默认路径:

$HADOOP_HOME/data/dfs/name

停止 NameNode 后备份:

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

2️⃣ 备份 fsimage

hdfs dfsadmin -fetchImage /backup/fsimage

三、配置文件备份(常被忽略)

一定要备份:

$HADOOP_HOME/etc/hadoop/

包括:

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml
  • workers / slaves
tar czf hadoop_conf_$(date +%F).tar.gz $HADOOP_HOME/etc/hadoop

四、推荐备份策略(实战)

✅ 日常

  • 开启 HDFS Snapshot(每日)
  • 每周 distcp 到备份集群

✅ 重要变更前

  • 手动 snapshot
  • 备份 conf + fsimage

✅ 容灾

  • 异地 distcp
  • 或同步到对象存储

五、简单自动备份脚本示例

#!/bin/bash
DATE=$(date +%F)
hdfs dfsadmin -allowSnapshot /user
hdfs dfs -createSnapshot /user snap_$DATE
tar czf /backup/conf_$DATE.tar.gz $HADOOP_HOME/etc/hadoop

如果你愿意,我可以:

  • 单机 / 集群 / 云 给你具体方案
  • 帮你写 定时 crontab 备份脚本
  • 针对 CDH / HDP / 社区版 给差异说明

0