Hadoop在Ubuntu上的备份方法及实施步骤
HDFS快照是只读的时间点副本,创建速度快且对集群性能影响小,适合需要快速恢复到某一时刻状态的场景。
allowSnapshot命令,允许该目录创建快照。hdfs dfsadmin -allowSnapshot /path/to/backup_directory
createSnapshot命令生成快照,指定快照名称(如snapshot_20251027)。hdfs dfs -createSnapshot /path/to/backup_directory snapshot_20251027
hdfs dfs -cp /path/to/backup_directory/.snapshot/snapshot_20251027/* /path/to/target_directory
DistCp(Distributed Copy)是Hadoop内置的分布式复制工具,基于MapReduce实现,支持跨集群、增量备份,适合大规模数据备份。
/source/data)的数据复制到目标路径(如/backup/data),支持全量或增量备份。hadoop distcp hdfs:///source/data hdfs:///backup/data
-update参数仅复制源路径中修改或新增的文件,减少备份时间和资源消耗。hadoop distcp -update hdfs:///source/data hdfs:///backup/data
若需备份Hadoop的元数据(如NameNode的fsimage、edits文件)或配置文件,可使用tar命令将相关目录打包压缩,便于离线存储。
/usr/local/hadoop/data/namenode),打包所有文件。tar -czvf namenode_backup_$(date +%Y%m%d).tar.gz /usr/local/hadoop/data/namenode/*
/etc/hadoop/conf)打包,包含core-site.xml、hdfs-site.xml等关键配置。tar -czvf hdfs_config_backup_$(date +%Y%m%d).tar.gz /etc/hadoop/conf
chmod 600 *.tar.gz)防止未授权访问。rsync是文件同步工具,支持增量备份(仅复制变化的文件),适合备份HDFS数据到本地或其他存储系统(需先将HDFS数据复制到本地临时目录)。
apt安装。sudo apt update && sudo apt install rsync -y
/tmp/hdfs_data),再用rsync同步到备份目录(如/backup/hdfs),--delete参数删除目标目录中源目录不存在的文件,保持一致性。#!/bin/bash
HDFS_DIR="/user/hadoop/data"
LOCAL_TMP="/tmp/hdfs_data"
BACKUP_DIR="/backup/hdfs"
# 创建临时目录
mkdir -p $LOCAL_TMP
# 将HDFS数据复制到本地临时目录
hdfs dfs -get $HDFS_DIR $LOCAL_TMP
# 使用rsync同步到备份目录
rsync -avz --delete $LOCAL_TMP/ $BACKUP_DIR/
# 清理临时目录
rm -rf $LOCAL_TMP
crontab -e添加定时任务(如每天凌晨2点执行),实现自动化备份。0 2 * * * /path/to/rsync_backup.sh >> /var/log/hdfs_rsync.log 2>&1
若需要自动化、实时备份或更丰富的功能(如跨云存储、版本管理),可使用第三方工具,如:
ambari-backup命令备份集群配置与数据。sudo ambari-backup backup --target-dir=/backup/ambari --cluster-name=my_cluster
hadoop distcp将HDFS数据复制到MinIO,实现低成本、可扩展的备份。hadoop distcp hdfs:///source/data s3a://minio-bucket/backup/data
sudo -u hdfs hdfs dfsadmin -safemode enter
# 执行备份操作
sudo -u hdfs hdfs dfsadmin -safemode leave
/var/log/hadoop-backup.log),定期检查备份是否成功(如通过ls命令查看备份目录大小)。