DistCp是Hadoop原生提供的分布式数据复制工具,基于MapReduce框架,适合在HDFS集群间或集群内部高效复制大规模数据,支持断点续传和并行传输。
操作步骤:
/source/path复制到/destination/path):hadoop distcp hdfs:///source/path hdfs:///destination/path
-update参数仅复制源目录中修改或新增的文件(避免全量复制):hadoop distcp -update hdfs:///source/path hdfs:///destination/path
/var/log/hadoop)查看详细信息。HDFS的Snapshot(快照)功能可创建文件系统或目录的只读时间点副本,不影响集群正常读写,适合快速恢复误删除或数据损坏场景。
操作步骤:
allowSnapshot命令(如/data目录):hdfs dfsadmin -allowSnapshot /data
createSnapshot命令生成快照(如命名为snapshot_20251025):hdfs dfs -createSnapshot /data snapshot_20251025
hdfs dfs -cp /data/.snapshot/snapshot_20251025/* /data/
listSnapshots命令查看目录下的所有快照:hdfs dfsadmin -listSnapshots /data
HDFS自带的hdfs dfs命令可实现简单的全量备份,适合小规模数据或临时备份需求。
常用命令:
hadoop dfs -cp -r /source/dir /backup/dir
/local/data到/hdfs/backup):hdfs dfs -put /local/data /hdfs/backup/
/hdfs/backup到/local/restore):hdfs dfs -get /hdfs/backup /local/restore/
对于企业级环境,可使用第三方工具实现更完善的备份管理(如集中存储、加密、版本控制、监控告警)。常见工具包括:
/backup/ambari):sudo ambari-backup backup --target-dir=/backup/ambari --backup-name my-hadoop-backup
通过Linux的cron定时任务实现备份自动化,避免人工干预,确保数据定期保存。
操作步骤:
crontab -e命令打开cron配置文件。backup_hadoop.sh脚本(备份/user/hadoop/data到/backup/hadoop):0 2 * * * /path/to/backup_hadoop.sh >> /var/log/hadoop-backup.log 2>&1
backup_hadoop.sh):#!/bin/bash
SOURCE_PATH="/user/hadoop/data"
BACKUP_PATH="/backup/hadoop/$(date +%Y%m%d)"
# 创建备份目录
mkdir -p $BACKUP_PATH
# 执行备份(使用DistCp)
hadoop distcp $SOURCE_PATH $BACKUP_PATH
# 检查备份结果
if [ $? -eq 0 ]; then
echo "$(date): Backup completed successfully." >> /var/log/hadoop-backup.log
else
echo "$(date): Backup failed." >> /var/log/hadoop-backup.log
fi
chmod +x /path/to/backup_hadoop.sh
chmod 700 /backup)。