温馨提示×

linux hadoop如何备份

小樊
39
2026-09-25 19:00:03
栏目: 智能运维

在 Linux 环境下对 Hadoop 进行备份,通常分为 HDFS 数据备份、元数据(NameNode)备份 和 配置文件备份 三类。下面按常见场景给你一个实用指南。


一、HDFS 数据备份

1. 使用 distcp(最常用)

适合集群间或同集群不同目录备份。

hadoop distcp hdfs://namenode1:8020/user/data hdfs://namenode2:8020/backup/data

同集群备份示例:

hadoop distcp /user/data /backup/data

✅ 优点:

  • 支持增量
  • 可跨集群
  • 带宽可控

2. 使用 hdfs dfs -copyToLocal

适合小规模数据备份到本地或 NFS。

hdfs dfs -copyToLocal /user/data /data/backup/

恢复:

hdfs dfs -copyFromLocal /data/backup/data /user/data

⚠️ 不适合 TB 级数据


3. HDFS 快照(Snapshot)

适合防误删。

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

查看:

hdfs dfs -ls /user/data/.snapshot

删除快照:

hdfs dfs -deleteSnapshot /user/data snapshot_20260121

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

1. 备份 dfs.namenode.name.dir

通常在:

$HADOOP_HOME/data/dfs/name

备份方式:

cp -r $HADOOP_HOME/data/dfs/name /backup/namenode_name_$(date +%F)

⚠️ 必须在 SafeMode 或停止 NameNode 时备份最安全

进入安全模式:

hdfs dfsadmin -safemode enter
# 备份
hdfs dfsadmin -safemode leave

2. 使用 SecondaryNameNode / Checkpoint

确保:

<property>
  <name>dfs.namenode.checkpoint.dir</name>
  <value>/data/dfs/namesecondary</value>
</property>

定期检查点会自动备份 fsimage。


三、配置文件备份

非常重要但常被忽略。

cp -r $HADOOP_HOME/etc/hadoop /backup/hadoop_etc_$(date +%F)

建议备份:

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml
  • workers / slaves

四、自动化备份(推荐)

示例 crontab

0 2 * * * /usr/bin/hdfs dfsadmin -safemode enter && \
cp -r /data/dfs/name /backup/name_$(date +\%F) && \
/usr/bin/hdfs dfsadmin -safemode leave

五、灾备方案(进阶)

  • ✅ 异地集群 distcp
  • ✅ 云对象存储(S3 / OSS)备份
  • ✅ HDFS Federation + 多 NameNode

六、恢复示例(NameNode)

stop namenode
cp -r /backup/name_20260121/* $HADOOP_HOME/data/dfs/name/
hdfs namenode -format(仅极端情况)
start namenode

如果你能告诉我:

  • 单节点还是集群?
  • Hadoop 版本?
  • 主要备份 HDFS 数据还是整个环境?

我可以给你 定制化备份脚本。

0 踩