在 Linux 上备份 Hadoop 数据,常见做法分为 HDFS 数据备份 和 元数据和配置备份 两部分。下面按实用场景给你一个完整思路。
distcp(官方推荐,适合集群间/跨机房)hadoop distcp hdfs://namenode1:8020/user hdfs://namenode2:8020/user_backup
✅ 优点
常用参数:
hadoop distcp -update -delete \
hdfs://src:8020/data \
hdfs://dst:8020/data_bak
hdfs dfs -copyToLocal(单机备份)hdfs dfs -get /user /backup/hdfs_user_$(date +%F)
或
hdfs dfs -copyToLocal /data /backup/data
⚠ 不适合 TB 级以上数据
hdfs dfsadmin -allowSnapshot /user
hdfs dfs -createSnapshot /user snapshot_20260121
恢复:
hdfs dfs -cp /user/.snapshot/snapshot_20260121 /user_restore
✅ 几乎零存储开销
hadoop distcp /user s3a://bucket/hdfs_backup/user
或
hdfs dfs -get /user /mnt/nas/hdfs_backup
默认路径:
$HADOOP_HOME/data/dfs/name
停止 NameNode 后备份:
tar czf nn_backup_$(date +%F).tar.gz $HADOOP_HOME/data/dfs/name
fsimagehdfs dfsadmin -fetchImage /backup/fsimage
一定要备份:
$HADOOP_HOME/etc/hadoop/
包括:
tar czf hadoop_conf_$(date +%F).tar.gz $HADOOP_HOME/etc/hadoop
✅ 日常
✅ 重要变更前
✅ 容灾
#!/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
如果你愿意,我可以: