温馨提示×

linux hadoop怎么备份

小樊
44
2026-09-19 20:01:56
栏目: 智能运维

在 Linux 环境下对 Hadoop 进行备份,通常分为 HDFS 数据备份元数据(NameNode)备份配置文件/集群备份 三类。下面按常见、实用的方法来说明。


一、HDFS 数据备份

1. 使用 hdfs dfs -distcp(最常用)

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

hdfs dfs -distcp hdfs://namenode1:8020/source hdfs://namenode2:8020/backup

同集群备份:

hdfs dfs -distcp /user/data /backup/user_data_$(date +%F)

✅ 优点:高效、支持增量(结合 -update

hdfs dfs -distcp -update /src /dst

2. 使用 hdfs dfs -copyToLocal

适合小数据量备份到本地磁盘或 NFS。

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

恢复:

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

3. 快照(Snapshot,推荐)

HDFS 原生支持快照,适合误操作恢复。

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

查看:

hdfs dfs -ls /user/data/.snapshot

删除快照:

hdfs dfs -deleteSnapshot /user/data backup_20260121

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

1. 备份 dfs.namenode.name.dir

停止 NameNode 后备份目录:

cp -r /data/hadoop/dfs/name /backup/name_$(date +%F)

或直接打包:

tar czf nn_backup.tar.gz /data/hadoop/dfs/name

2. 使用 SecondaryNameNode / Checkpoint

确保:

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

定期保存 fsimageedits


三、Hadoop 配置文件备份

tar czf hadoop_conf_backup.tar.gz $HADOOP_HOME/etc/hadoop

建议备份:

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml

四、整机 / 集群级备份方案(进阶)

1. 跨集群灾备

  • 主集群 → 备集群(distcp)
  • 定时任务(cron)
0 2 * * * hdfs dfs -distcp -update /data hdfs://backup-cluster:8020/backup

2. 结合对象存储(云备份)

hdfs dfs -distcp /data s3a://bucket/backup

五、恢复示例

HDFS 数据恢复

hdfs dfs -cp /backup/user_data_20260121 /user/data

NameNode 恢复

  1. 停止 NameNode
  2. 替换 name 目录
  3. 启动 NameNode

六、备份建议总结

✅ 日常:快照 + distcp
✅ 周/月:NameNode + 配置备份
✅ 重要集群:异地/跨集群备份

如果你能说明:

  • Hadoop 版本
  • 单机还是集群
  • 是否上云

我可以给你一套具体可执行的备份脚本

0