温馨提示×

Ubuntu HDFS数据迁移方法是什么

小樊
44
2025-11-15 05:42:23
栏目: 智能运维

Ubuntu环境下常用的HDFS数据迁移方法

一、迁移方式总览

  • Hadoop DistCp:HDFS官方分布式拷贝工具,适合同版本/跨版本、同/跨集群迁移,支持带宽限速、增量同步、权限保留等,用法为:hadoop distcp [options] 。适合绝大多数批量迁移场景。
  • HDFS快照 + DistCp:对关键目录先创建快照,再基于快照迁移,便于在迁移窗口内获得一致性视图。
  • 对象存储中转:通过DistCp把数据迁到对象存储(如COS),再从对象存储迁到目标集群,适合跨机房/跨云或网络受限场景。
  • 关系型数据库与HDFS互导:使用SqoopMySQL ↔ HDFS之间导入导出,适合表型数据/维表同步。
  • 第三方ETL工具:如DataX、Kettle、DataPipeline等,适合复杂转换与调度场景。

二、DistCp常用命令与场景

  • 基本用法
    • 同版本集群:hadoop distcp hdfs://src-nn:8020/path hdfs://dst-nn:8020/path
    • 跨版本集群(HTTP方式):hadoop distcp hftp://src-nn:50070/path hdfs://dst-nn:8020/path
  • 常用参数
    • -m N:指定Map任务数(并发度)
    • -bandwidth N:限制带宽(MB/s),降低对业务影响
    • -update/-overwrite:已存在文件时更新/覆盖
    • -append:追加数据到已存在文件
    • -p:保留权限、属主、时间戳等
  • 示例
    • 全量迁移并按文件大小切分并发:hadoop distcp -m 20 -bandwidth 100 hdfs://nn1:8020/data hdfs://nn2:8020/data
    • 增量同步(仅传差异):hadoop distcp -update hdfs://nn1:8020/data hdfs://nn2:8020/data
    • 跨版本迁移:hadoop distcp hftp://nn1:50070/data hdfs://nn2:8020/data

三、迁移流程与关键注意事项

  • 评估与规划
    • 盘点数据量:hdfs dfs -du -h /,按业务/目录拆分迁移批次
    • 评估带宽与窗口:选择低峰时段,必要时做带宽限速
    • 小流量演练:先迁移100GB/500GB/1TB验证速率与问题
  • 一致性策略
    • 静态数据:一次性全量迁移
    • 动态数据:采用全量 + 多次增量(如按天/小时窗口),或使用HDFS快照获取一致性视图后迁移
  • 权限与元数据
    • 使用**-p**保留权限/属主/时间戳;迁移后核对ACL与Quota
  • 安全与网络
    • 跨集群迁移优先走内网;如启用Kerberos,需完成双方集群认证与票据配置

四、Sqoop用于MySQL与HDFS互导

  • 环境准备(Ubuntu示例)
    • 安装Sqoop 1.4.7Hadoop 3.xMySQL 5.7;将MySQL JDBC驱动放入$SQOOP_HOME/lib;配置SQOOP_HOME、HADOOP_COMMON_HOME、HADOOP_MAPRED_HOME等环境变量
  • 从MySQL导入HDFS
    • 示例:sqoop import -connect jdbc:mysql://localhost:3306/test --username root --password 123456 -table test1 -m 1
  • 从HDFS导出到MySQL
    • 先准备目标表结构,再导出:sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table test2 --export-dir /user/hadoop/test1/part-m-00000 -m 1

0