Debian Hadoop数据备份策略
全量备份是备份所有选定数据的最基础方法,适用于首次备份或定期归档。常见命令如下:
hadoop fs -cp
命令复制HDFS数据目录(如/data
)到备份路径(如/backup
),需添加-r
选项递归复制子目录:hadoop fs -cp -r hdfs://localhost:9000/data hdfs://localhost:9000/backup
sudo -u hdfs hdfs dfsadmin -safemode enter
;sudo -u hdfs hdfs dfsadmin -saveNamespace
;hdfs dfsadmin -createSnapshot /path/to/data snapshot_name
。增量备份仅复制自上次备份(全量或增量)以来变更的数据,节省存储空间和备份时间。常用方法:
hdfs dfs -cp
与hdfs dfs -rsync
命令:先执行全量备份,后续每日用rsync
同步新增/修改内容:hadoop fs -rsync /data hdfs://localhost:9000/backup
DistCp
工具的--update
选项,仅复制源与目标不一致的文件:hadoop distcp --update hdfs://source-namenode:8020/source_dir hdfs://target-namenode:8020/backup_dir
差异备份复制自上次全量备份以来变更的数据,恢复时只需全量备份+最近一次差异备份,适合数据变化大且恢复时间要求高的场景。实现方式:
hdfs dfs -rsync
或DistCp
过滤上次全量备份后的变更数据(需结合时间戳或版本控制)。NameNode的元数据(fsimage
、edits
文件)是HDFS的核心,需定期备份以防止元数据丢失。操作步骤:
sudo -u hdfs hdfs dfsadmin -safemode enter
;sudo -u hdfs hdfs dfsadmin -saveNamespace
;/dfs/nn
)到备份存储(如本地/nnbak
或远程服务器):sudo -u hdfs cp -r /dfs/nn/* /nnbak/
若Hadoop集群使用MariaDB存储Hive、HBase等组件的元数据,需通过mysqldump
备份数据库:
username
、password
、database_name
):mysqldump -u username -p password database_name > /backup/mariadb_backup.sql
duplicity --full-if-older-than 1M /path/to/hadoop/data file:///backup/hadoop_backup
通过cron
定时任务自动执行备份脚本,确保备份及时性。示例步骤:
backup_hadoop.sh
),包含全量/增量备份命令及日志记录;chmod +x /path/to/backup_hadoop.sh
;cron
任务(如每天凌晨2点执行):crontab -e
输入:0 2 * * * /path/to/backup_hadoop.sh >> /var/log/hadoop_backup.log 2>&1
cron
定时执行,避免人工遗漏。