Ubuntu Hadoop 数据迁移方法概览
在 Ubuntu 上的 Hadoop 环境中,数据迁移可按场景分为以下几类:HDFS 同/跨集群拷贝、HDFS 与本地/对象存储互传、关系型数据库与 HDFS/Hive 的导入导出、HBase 表级迁移,以及 HDFS 内部重命名/移动。下面给出常用方法与关键要点。
常用方法一览
| 方法 |
典型场景 |
关键命令或工具 |
主要优点 |
注意点 |
| Hadoop DistCp |
同版本或不同版本 HDFS 之间迁移、跨集群迁移 |
hadoop distcp [options] |
分布式并行、可限速、可保留属性、适合大规模 |
版本差异选 webhdfs/hftp;大目录分批;注意权限与一致性 |
| HDFS 本地/对象存储互传 |
HDFS ↔ 本地、COS 等对象存储 |
hadoop distcp hdfs://… file:///… 或 cosn://… |
统一用 DistCp,操作简单 |
对象存储需对应 Connector 与权限配置 |
| 关系型数据库 ↔ HDFS/Hive(Sqoop) |
MySQL → HDFS/Hive 全量/增量导入 |
sqoop import/export |
生态成熟、上手快 |
JDBC 驱动版本匹配;Hive 配置与权限;可用 --incremental |
| HBase 表级迁移(Export/Import) |
HBase 表数据迁移/恢复 |
hbase org.apache.hadoop.hbase.mapreduce.Export/Import |
表级一致性好、可分批 |
依赖 MR;按时间/范围切分;目标表结构需兼容 |
| HDFS 内部 mv/cp |
同集群内重命名或目录移动 |
hadoop fs -mv/-cp |
轻量、快速 |
跨文件系统不支持;大数据量移动仍建议用 DistCp |
关键命令示例
- DistCp 同版本集群拷贝
- hadoop distcp hdfs://nn1:8020/data hdfs://nn2:8020/data
- DistCp 跨版本或跨集群(HTTP 接口)
- hadoop distcp webhdfs://src-nn:50070/user/src hdfs://dst-nn:8020/user/dst
- DistCp 限速与并发
- hadoop distcp -m 50 -bandwidth 100 hdfs://src /hdfs/dst(并发 50,单 Map 带宽 100 MB/s)
- DistCp 增量同步
- hadoop distcp -update -delete hdfs://src /hdfs/dst(仅传差异;谨慎使用 -delete)
- HDFS 与本地/对象存储
- 到本地:hadoop distcp hdfs://nn:8020/data file:///data/backup
- 到对象存储(以 COS 为例):hadoop distcp hdfs://nn:8020/data cosn://bucket/backup
- Sqoop MySQL → HDFS
- sqoop import --connect jdbc:mysql://127.0.0.1:3306/db --table t --target-dir /user/hive/warehouse/t -m 1
- Sqoop MySQL → Hive
- sqoop import --connect jdbc:mysql://127.0.0.1:3306/db --table t --hive-import -m 1
- HBase 表级迁移
- 导出:sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.Export t /backup/t 1 0
- 导入:sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.Import t /backup/t
- HDFS 内部移动
- hadoop fs -mv /user/hadoop/file.txt /user/hadoop/archive/file.txt
迁移实施要点
- 评估与规划
- 用 hdfs dfs -du -h /path 评估数据量与目录结构;按业务分目录、分批迁移,优先选择业务低峰时段执行。
- 带宽与性能
- 通过 -m 提升并发、用 -bandwidth 限制单 Map 带宽;先做 100GB/500GB/1TB 试跑评估速率与问题。
- 一致性与容错
- 全量后做增量:优先用 -update;如需严格一致可配合 -delete;任务失败可清理目标脏数据后重跑;必要时用 -i 忽略失败文件。
- 权限与属性
- 用 -p 保留用户/组/权限/校验和/ACL/XATTR 等;若未保留,迁移后用 chown/chmod 修正。
- 版本与安全
- 版本差异较大时使用 webhdfs/hftp;跨集群启用 Kerberos 时需完成认证与权限打通(如 principal/keytab 配置)。