HDFS数据在CentOS上的备份方法
在CentOS上备份HDFS数据前,需确保Hadoop集群已正确安装并运行。核心配置包括core-site.xml(设置fs.defaultFS为hdfs://namenode:9000)和hdfs-site.xml(设置dfs.replication为3,默认副本数,保障数据冗余)。可通过hdfs dfsadmin -report命令检查集群状态,确认所有NameNode、DataNode正常运行。
快照是HDFS的只读时间点副本,适合快速恢复整个目录或文件系统到特定时刻。
hdfs dfsadmin -allowSnapshot /path/to/snapshotDir),然后执行hdfs dfs -createSnapshot /path/to/snapshotDir snapshotName(如snapshot_20251007)。hdfs dfs -cp /path/to/snapshotDir/. /path/to/destinationDir命令将快照内容复制到目标目录,覆盖原有数据即可恢复。distcp是Hadoop内置的分布式复制工具,适用于大规模数据的全量/增量备份(如跨集群或本地备份)。
hadoop distcp hdfs://namenode:9000/source/path hdfs://backup-namenode:9000/backup/path(将源集群数据复制到备份集群)。-update参数(仅复制源端修改过的文件)或-overwrite参数(覆盖目标端文件),例如hadoop distcp -update hdfs://source:9000/data hdfs://backup:9000/data。保存HDFS的元数据(命名空间镜像和编辑日志),用于元数据恢复。
hdfs dfsadmin -safemode enter),执行hdfs dfsadmin -saveNamespace(将元数据保存到dfs.namenode.name.dir指定的目录),退出安全模式(hdfs dfsadmin -safemode leave)。rsync是Linux下的文件同步工具,可将HDFS数据同步到本地或远程存储(如NFS、SAN)。
backup_hdfs.sh,内容如下:#!/bin/bash
SOURCE_PATH="/user/hadoop/data"
BACKUP_PATH="/backup/hdfs"
rsync -avz --delete hdfs://namenode:9000$SOURCE_PATH $BACKUP_PATH
echo "$(date): Backup completed" >> /var/log/hdfs_backup.log
crontab -e添加定时任务(如每天凌晨2点执行):0 2 * * * /path/to/backup_hdfs.sh。MinIO提供与HDFS兼容的S3接口,适合将HDFS数据备份到云端或对象存储。
wget https://dl.min.io/server/minio/release/linux-amd64/minio,添加执行权限后启动),创建存储桶(mc mb myminio/backup)。mc mirror命令同步HDFS数据到MinIO:mc mirror hdfs://namenode:9000/source/path myminio/backup。HDFS配置文件(如core-site.xml、hdfs-site.xml、mapred-site.xml)是集群运行的关键,需定期备份。
mkdir -p /backup/hdfs && tar -czvf /backup/hdfs/hdfs-config-$(date +%Y%m%d%H%M%S).tar.gz /etc/hadoop/conf(将配置目录打包为带时间戳的压缩包)。0 3 * * 0 /bin/bash -c 'tar -czvf /backup/hdfs/hdfs-config-$(date +\%Y\%m\%d\%H\%M\%S).tar.gz /etc/hadoop/conf'。crontab -e设置定期备份(如每天凌晨2点执行distcp或rsync脚本),确保备份持续性。/var/log/hdfs_backup.log),定期检查日志确认备份成功;通过hdfs dfs -ls /backup/path或mc ls myminio/backup验证备份数据的完整性和可访问性。