Hadoop在Ubuntu上的备份与恢复策略
hdfs dfsadmin -createSnapshot /path/to/data snapshot_name命令创建HDFS目录的只读时间点副本,备份过程高效且对集群性能影响小。恢复时,先删除原数据目录,再通过hdfs dfs -cp /path/to/backup/.snapshot/snapshot_name/file /path/to/data命令从快照恢复数据。hadoop distcp hdfs://source_path hdfs://backup_path,支持并行复制和容错,能有效处理PB级数据。hadoop archive -archiveName myhar.har -p /input/path /output/path,恢复时通过hadoop fs -cp /output/path/myhar.har/* /target/path解压到目标目录。hadoop fs -get命令将HDFS数据复制到本地文件系统(如hadoop fs -get /hdfs/source /local/destination),或通过scp命令复制到远程服务器,适合小规模数据备份。hdfs dfsadmin -safemode enter),保存命名空间(hdfs dfsadmin -saveNamespace),再复制NameNode数据目录(如/dfs/nn/current)到备份位置;恢复时,删除损坏的元数据目录,复制备份文件并还原属组(chown hdfs:hdfs -R current/),最后重启NameNode。mysqldump命令备份(如mysqldump -uroot -p --databases metastore > metastore_backup.sql),恢复时导入SQL文件(mysql -uroot -p metastore < metastore_backup.sql)。distcp或hdfs dfs -get命令),通过crontab -e设置定时执行(如每天凌晨2点执行0 2 * * * /path/to/backup_script.sh),实现自动化备份。hdfs dfsadmin -report定期检查集群状态,监控备份任务的日志(如tail -f /var/log/hadoop/hdfs/hadoop-hdfs-namenode.log),确保备份成功并及时处理失败任务。hdfs dfsadmin -report查看DataNode数量、容量使用情况及集群健康状态,确认故障范围(如NameNode宕机、DataNode失效)。/path/to/hadoop/logs/hadoop-*-namenode-*.log)和DataNode(/path/to/hadoop/logs/hadoop-*-datanode-*.log)的日志,定位故障原因(如磁盘损坏、进程崩溃、元数据损坏)。hdfs fsck / -files -blocks -locations命令检查HDFS文件系统的健康状况,识别损坏的数据块或丢失的副本。sudo systemctl restart hadoop-namenode),若无法启动,检查日志确认原因(如端口冲突、配置错误),修复后重新启动。/dfs/nn/current),确保属组为hdfs(chown hdfs:hdfs -R /dfs/nn/current),重启NameNode并退出安全模式(hdfs dfsadmin -safemode leave)。sudo systemctl restart hadoop-datanode),检查数据目录(如/dfs/dn/current)是否损坏,若损坏,从其他DataNode复制副本修复。hdfs debug recoverLease /path/to/corrupt/file -retries 3命令尝试修复损坏的数据块;若修复失败,从备份中恢复该文件。hdfs dfsadmin -createSnapshot /path/to/data new_snapshot),然后从快照目录(.snapshot/new_snapshot)复制数据到目标路径。distcp命令将备份数据复制回原集群(如hadoop distcp hdfs://backup-cluster/path/to/backup hdfs://original-cluster/path/to/restore)。fsimage和edits文件到/dfs/nn/current,重启NameNode并退出安全模式。deja-dup --restore)或Timeshift(timeshift --restore)等工具,选择备份时间点恢复数据,适合桌面或小型环境。