在 CentOS 上备份 HDFS 数据,常见做法有几种,取决于你是整集群备份、目录级备份还是灾备。下面按使用频率从高到低说明。
distcp 备份(最常用,推荐)hadoop distcp hdfs://namenode1:8020/source/path hdfs://namenode2:8020/backup/path
示例:
hadoop distcp hdfs://cdh1:8020/user/hive/warehouse hdfs://backup01:8020/backup/hive_warehouse
✅ 优点:
-update -diff)hadoop distcp /data/logs /backup/data/logs_20260101
hdfs dfs -get 备份到 CentOS 本地磁盘适合小数据量或临时备份。
hdfs dfs -get /user/hive/warehouse /data/backup/hive_warehouse
打包压缩:
tar -zcvf hive_backup.tar.gz /data/backup/hive_warehouse
⚠️ 注意:
hdfs dfsadmin -fetchImage(只备份元数据)只备份 NameNode 元数据(不包含真实数据)。
hdfs dfsadmin -fetchImage /data/backup/nn_image
常用于:
hdfs dfs -allowSnapshot /data
hdfs dfs -createSnapshot /data snapshot_20260101
hdfs dfs -cp /data/.snapshot/ssnapshot_20260101 /data/restore
✅ 适合:
hive \
-e "EXPORT TABLE db.table TO '/backup/hive/db_table'"
恢复:
hive -e "IMPORT TABLE db.table FROM '/backup/hive/db_table'"
crontab -e
示例(每天 2 点备份):
0 2 * * * /usr/bin/hadoop distcp /data /backup/data_$(date +\%F)
| 场景 | 推荐方式 |
|---|---|
| 跨集群灾备 | distcp |
| 误删恢复 | Snapshot |
| 小数据临时备份 | get + tar |
| 元数据保护 | fetchImage |
| Hive 数仓 | EXPORT/IMPORT |
如果你能告诉我:
我可以给你一套可直接用的备份脚本。