温馨提示×

linux hadoop怎备份

小樊
34
2026-10-19 03:59:29
栏目: 智能运维

在 Linux 上备份 Hadoop 通常需要从 元数据(NameNode)、数据(HDFS 数据块)、配置文件 和 业务数据 几个层面来考虑。下面给你一套实用、可落地的备份方案。


一、Hadoop 需要备份什么?

1️⃣ NameNode 元数据(最重要)

  • 目录:dfs.namenode.name.dir
  • 内容:fsimage + edits
  • 丢失 = 整个 HDFS 不可用

2️⃣ Hadoop 配置文件

  • $HADOOP_HOME/etc/hadoop
  • 包括:core-site.xml, hdfs-site.xml, yarn-site.xml 等

3️⃣ HDFS 业务数据

  • 数据本身在 DataNode
  • 可通过 HDFS 命令或 distcp 备份

4️⃣ 日志(可选)

  • $HADOOP_HOME/logs

二、NameNode 元数据备份(核心)

✅ 方法 1:直接冷备份(停机或低峰)

# 停止 NameNode
stop-dfs.sh

# 备份 name 目录
tar -czvf namenode-backup-$(date +%F).tar.gz \
    $HADOOP_HOME/data/dfs/name

# 启动
start-dfs.sh

✅ 适合:小集群 / 测试环境


✅ 方法 2:不停机备份(推荐)

# 强制生成 fsimage
hdfs dfsadmin -safemode enter
hdfs dfsadmin -saveNamespace
hdfs dfsadmin -ssafemode leave

# 备份
cp -r $HADOOP_HOME/data/dfs/name /backup/namenode-$(date +%F)

✅ 方法 3:定时自动备份(crontab)

crontab -e
0 2 * * * hdfs dfsadmin -saveNamespace && \
tar -czf /backup/nn-$(date +%F).tar.gz $HADOOP_HOME/data/dfs/name

三、HDFS 数据备份(业务数据)

✅ 方法 1:distcp(集群间备份,最推荐)

hadoop distcp hdfs://nn1:9000/user hdfs://backup-nn:9000/user_backup

✅ 适合:

  • 跨集群
  • 异地容灾

✅ 方法 2:HDFS → 本地 / NFS

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

✅ 方法 3:快照(HDFS Snapshot)

hdfs dfsadmin -allowSnapshot /user

hdfs dfs -createSnapshot /user snapshot_20260121

✅ 轻量、秒级 ❌ 不是真正异地备份


四、配置文件备份

tar -czf hadoop-conf-$(date +%F).tar.gz $HADOOP_HOME/etc/hadoop

建议和 NameNode 备份一起存


五、生产环境推荐方案(总结)

项目 方式
NameNode 元数据 saveNamespace + 定时备份
HDFS 数据 distcp 到备集群
配置 tar 打包
频率 每天 / 每周
存储 异地 / 对象存储

六、常见坑提醒 ⚠️

  • ❌ 只备份 DataNode 没用
  • ❌ fsimage 不等于完整备份
  • ✅ NameNode 备份必须和配置一起
  • ✅ 恢复前先测试!

如果你愿意,我可以:

  • 给你写一套 自动备份脚本
  • 按 CDH / HDP / 原生 Hadoop 给方案
  • 教你 如何恢复 NameNode

你现在是 测试还是生产环境?

0 踩