文档首页/ MapReduce服务 MRS/ 最佳实践/ 数据迁移/ 使用CDM服务迁移Hive数据至MRS集群
更新时间:2025-08-14 GMT+08:00

使用CDM服务迁移Hive数据至MRS集群

应用场景

云数据迁移(Cloud Data Migration,简称CDM),是一种高效、易用的批量数据迁移服务。 CDM围绕大数据迁移上云和智能数据湖解决方案,提供了简单易用的迁移能力和多种数据源到数据湖的集成能力,降低了客户数据源迁移和集成的复杂性,有效地提高您数据迁移和集成的效率。

Hive可使用CDM实现数据的全量迁移和增量迁移。对于全量迁移,CDM支持文件迁移方式,通过高效批量迁移实现数据的抽取和写入。CDM的数据迁移基于分布式计算框架,通过高效批量迁移的方式,实现数据在源端和目标端之间的自由流动。

本章节以通过华为云CDM服务进行数据迁移为例介绍,将线下IDC机房或者公有云Hive集群中的数据(支持数据量在几十TB级别或以下的数据量级)全量迁移到华为云MRS集群。

方案架构

Hive数据迁移分两部分内容:

  • Hive的元数据信息,存储在MySQL等数据库中。MRS Hive集群的元数据会默认存储到MRS DBService组件,也可以选择RDS(MySQL)作为外置元数据库。
  • Hive的业务数据,存储在HDFS文件系统或OBS对象存储中。
图1 Hive数据迁移场景

方案优势

场景化迁移通过迁移快照数据然后再恢复表数据的方法,能大大提升迁移效率。

迁移调研

迁移Hive数据前需要对源端Hive组件进行调研,以便评估迁移过程中可能会产生的风险、对系统的影响等。调研主要包含Hive组件版本、迁移数据量、库表清单、任务数量等,具体请参考表1

表1 迁移调研

调研项目

调研内容

示例

版本兼容性

Hive版本号。

3.1.1

数据量

Hive需要迁移的总数据量。

总数据量:单节点10TB

库表清单

统计需要迁移的Hive表个数,及分区表个数,表的最大数据规模的分布情况(即xxx个表是GB以内,xxx个表是TB以内,最大表是xxxTB),及最大分区数量(单表的分区数量不能太大,需在数万以内)。

总共有3DB Hive表,每DB包含3000张表,10%表有分区。

最大表100TB,普通表约20GB,表最大分区数量为1000。

任务数量

需统计每天Hive处理的任务数量,及提交任务的最大并数。

每天Hive处理1W个任务,每个任务约2~3个SQL语句,每个SQL语句关联2~3个表,最大并发任务数为10个。

权限

  • 是否开启了Kerberos认证。
  • Hive用户数量。
  • Hive使用的权限模型。
  • 开启了Kerberos认证(安全集群)。
  • 有10个不同权限用户,用户交叉授权。

提交方式

Hive提交任务的方式。例如使用hive命令或beeline命令提交任务。

使用beeline命令提交任务。

自定义函数(UDF)

是否使用了UDF自定义函数,如果使用了,需统计UDF函数的个数及类型。

共使用了20个UDF自定义函数,包含UDF、UDTF、UDAF三种类型。

网络方案

迁移方案支持各种网络选型:公网、VPN、专线等。根据实际情况选择网络方案,保证源端Hive和目的端MRS集群分别都与CDM集群和Mgc Agent网络互通,即可迁移数据并进行数据校验。

表2 网络方案

迁移网络类型

优点

缺点

专线

  • 性能稳定:时延低至毫秒级。
  • 带宽选择范围可达几十Gbit/s。
  • 数据传输安全性高。
  • 成本高:一般是包年包月。
  • 源端和目的端私网IP地址不能重叠。
  • 开通时间长:一般需提前1个月申请。

VPN

  • 组网灵活,随时搭建。
  • 稳定性较好,安全性较好。
  • 成本适中:公网费用+VPN费用。
  • 时延较高。
  • 源端和目的端私网IP地址不能重叠。

公网IP

  • 支持源端和目的端私网IP一致的情况下实施迁移。
  • 带宽任意选择(Mbit/s~Gbit/s)。
  • 即买即用,快速绑定。
  • 成本低。
  • 稳定性差:带宽可能无法全部利用,迁移速率相对较慢。
  • 公网传输数据有泄漏风险。

约束与限制

  • 本章节以通过华为云CDM服务2.9.1.200版本进行数据迁移为例介绍,不同版本操作可能有差异,具体操作详情以实际版本对应的操作指导为准。
  • CDM服务支持迁移的数据源可参考支持的数据源,数据源为Apache Hive时,不支持2.x版本,建议使用的版本为1.2.X、3.1.X,请执行搬迁前务必确认是否支持搬迁。
  • 搬迁数据量较大时,对网络通信要求较高,执行搬迁任务时,可能会影响其他业务,建议在业务空闲期进行数据迁移任务。
  • 在迁移过程中,更改源端Hive表数据后未能及时同步到目标集群,可能导致数据不一致。可以使用校验工具识别不一致数据,进行重迁或者补数。
  • CDM无法迁移数据的属性,例如owner、ACL、checksum等信息,详见CDM数据迁移约束与限制

迁移Hive数据

  1. 登录CDM管理控制台。
  2. 创建CDM集群,该CDM集群的安全组、虚拟私有云、子网需要和迁移目的端集群保持一致,保证CDM集群和MRS集群之间网络互通。
  3. 在“集群管理”页面单击待操作集群对应“操作”列的“作业管理”。
  4. 在“连接管理”页签,单击“新建连接”。
  5. 参考CDM服务的新建连接页面,分别添加到迁移源端集群和迁移目的端集群的连接。

    连接类型根据实际集群来选择,如果是MRS集群,连接器类型可以选择“MRS Hive”,如果是自建集群可以选择“Apache Hive”。

    图2 创建Hive连接

  6. 在迁移目的端集群中创建数据迁移后的存储数据库。
  7. 选择“作业管理”的“表/文件迁移”页签,单击“新建作业”。
  8. 进入作业参数配置界面,配置作业名称,并分别为源连接和目的连接选择5中创建的对应数据连接并选择要迁移的数据库和表名,单击“下一步”。更多作业参数介绍请参见新建表/文件迁移作业

    图3 Hive作业配置

  9. 配置源字段和目的字段的映射关系, 并单击“下一步”。
  10. 进入任务配置页面,不做修改,直接单击“保存”。
  11. 选择“作业管理”的“表/文件迁移”页签,在待运行作业的“操作”列单击“运行”,即可开始Hive数据迁移。
  12. 迁移完成后,可以在目的端集群和源端集群的Hive Beeline命令行中,通过同样的查询语句,对比查询结果进行验证。

    例如在目的端集群和源端集群上通过查询catalog_sales表的记录数来确认数据条数是否一致。

    select count(*) from catalog_sales;
    图4 源端集群数据记录
    图5 目的端集群数据记录

  13. (可选)如果源端集群中有新增数据需要定期将新增数据迁移至目的端集群,则根据数据新增方式进行不同方式的迁移。配置定期任务增量迁移数据,直到所有业务迁移至目的端集群。

    • Hive表数据修改、未新增删除表、未修改已有表的数据结构:此时Hive表已经创建好,仅需迁移Hive存储在HDFS或OBS上的文件即可,请参考使用CDM服务迁移Hadoop数据至MRS集群页面新增数据迁移方式进行数据迁移。
    • Hive表有新增:请选择“作业管理”的“表/文件迁移”页签,在Hive迁移作业的“操作”列单击“编辑”,选择新增的数据表进行数据迁移。
    • Hive表有删除或已有表的数据结构有修改:请在目的端集群中手动删除对应表或手动更新变更的表结构。

校验Hive迁移数据

以下操作为使用MgC Agent校验迁移后的Hive数据的一致性操作示例,以Linux版本25.3.3为例进行演示,具体以实际版本界面为准,详细操作请参见大数据校验

  1. 分别创建两个Linux系统和一个Windows系统的弹性云服务器,对应ECS的安全组、虚拟私有云、子网需要和迁移目的端MRS集群保持一致,具体操作请参见自定义购买ECS

    后续操作中,MRS集群客户端和Mgc Agent需分别安装在不同的ECS节点上。

  2. 安装MRS集群客户端。

    在新创建的其中一个Linux主机上安装MRS集群客户端,具体操作请参见安装客户端(3.x版本)

  3. 创建Mgc项目。

    1. 登录迁移中心管理控制台
    2. 单击左侧导航栏的“其他 > 配置管理”,进入配置管理页面。
    3. 选择“项目管理”页签,单击“创建项目”,右侧弹出创建新项目窗口。
    4. 在弹出的窗口中,选择“复杂迁移(大数据迁移)”项目类型,并设置项目名称,例如“mrs-hive”。

      项目类型选择后将无法更改。

    5. 单击“创建”。创建项目成功,可在项目管理列表查看。

  4. 在新创建的另一个Linux主机上部署MgC Agent并创建连接,部署MgC Agent的详细操作请参见部署MgC Agent(原Edge)

    1. 在导航栏左侧最上方切换新创建的项目,选择“总览 > 迁移中心Agent”下载Agent安装包。

      在Linux版区域,单击“下载安装包”或“复制下载命令”,将MgC Agent安装程序下载到Linux主机。

    2. 执行如下命令,解压MgC Agent安装包:
      tar zxvf MgC-Agent.tar.gz
    3. 执行如下命令,进入MgC Agent安装目录中的scripts目录:
      cd MgC-Agent/scripts/
    4. 执行如下命令,启动MgC Agent安装脚本:
      ./install.sh
    5. 输入Linux本机网卡的弹性公网IP地址作为后续访问MgC Agent页面的地址。

      如果输入的地址不在本机拥有的IP列表中,会提示是否开放本机所拥有的任何公网IP作为访问地址。

    6. 当出现如下图所示提示时,表示Linux版的MgC Agent已安装完成。其中提示的端口号请以实际情况为准。
      图6 安装MgC Agent成功

      执行如下命令,更新环境变量:

      source /opt/cloud/MgC-Agent/scripts/setenv.sh

      还需在安装MgC Agent的主机安全组入网规则中,需要添加一条允许通过TCP协议访问27080端口的规则。源地址填写用于登录MgC Agent控制台的Windows主机IP地址。

    7. 安装完成后,在1创建的Windows主机上打开浏览器,输入地址“https://IP地址:端口号”,即可访问MgC Agent的登录页面。例如,IP为“192.168.x.x”,端口号为“27080”,则MgC Agent的访问地址为“https://192.168.x.x:27080”。

      其中,IP为4.e输入的IP地址,端口号为4.f中MgC Agent安装成功提示的端口号。

    8. 登录MgC Agent。
      1. 在登录页面,登录方式选择“华为云密钥登录”。
      2. 分别输入华为云账号的AK、SK,在区域下拉列表选择在MgC服务创建项目的区域。
      3. 单击“登录”按钮,进入MgC Agent的总览页面。
    9. (仅首次登录需要配置)在总览界面,单击页面右上方的“立即连接”按钮,右侧弹出连接迁移中心页面。
      1. 在连接迁移中心页面配置以下参数:
        • 第一步:配置连接方式

          输入华为云账号的AK/SK。

        • 第二步:关联迁移中心项目

          迁移中心项目:单击“查询项目”按钮,查询成功后在下拉列表中,选择3创建的迁移项目。

        • 第三步:预设当前迁移中心Agent名称

          迁移中心Agent名称:输入自定义迁移Agent名称,例如“Agent”。

      2. 单击“连接”按钮,确认要与迁移中心进行连接,单击“确定”按钮。

        当总览页面显示状态为“已连接”,代表与MgC连接成功。

  5. 添加执行机凭证。

    1. 在左侧导航栏选择“云边协同 > 凭证列表”,进入凭证列表页面。
    2. 单击列表上方的“创建凭证”按钮,配置以下参数创建源端凭证和目的端凭证:
      表3 创建Hive凭证

      参数

      参数配置

      使用类型

      选择“大数据”。

      类型

      选择“执行机”。

      凭证名称

      输入自定义凭证名称,例如,源端凭证名称为“source_executor”,目标端凭证名称为“target_executor”。

      认证方式

      选择“用户名/密码”。

      用户名

      输入连接源端Hive客户端或目的端MRS集群客户端节点的用户名,例如“hive_user”。

      密码

      输入用户密码。

      凭证创建后,等待凭证列表中相应凭证所在行的“同步状态”变为“已同步”。

  6. 选择并启用MgC Agent(仅首次使用时需要配置)。

    1. 登录迁移中心管理控制台
    2. 切换页面左上方的项目为3创建的项目名称。
    3. 在左侧导航栏选择“实施 > 大数据校验”,进入大数据校验页面。
    4. 单击“选择并启用迁移中心Agent”按钮,弹出选择迁移中心Agent窗口。
    5. 在下拉列表中,选择与迁移中心连接成功的MgC Agent,单击“启用”按钮,启用该工具进行后续操作。
      图7 启用MgC Agent

  7. 创建Hive MetaStore源端连接。

    1. 在大数据校验页面的“功能入口”区域单击“大数据迁移准备”进入大数据迁移准备页面。
    2. 在“连接管理”页签,单击“创建连接”进入新增连接页面,“大数据组件”选择“Hive MetaStore”,单击“下一步”。
    3. 在详细配置页面配置以下参数,参数具体配置说明请参见创建源端组件连接中的“Hive Metastore连接参数配置说明”内容:
      表4 源端Hive连接配置

      参数

      参数配置

      所属源

      选择“源端”。

      连接名称

      默认创建名称为“Hive-Metastore-4位随机数(字母和数字)”,也可以自定义名称。

      迁移中心Agent

      选择MgC Agent中已启用的Agent名称。

      启用安全连接

      根据实际需求启用安全连接,例如,不勾选“启用安全连接”。

      Hive版本

      选择源端Hive集群版本。

      MetaStore节点IP

      填写连接MetaStore的IP地址。

      MetaStore Thrift服务端口

      填写连接MetaStore的端口,默认为9083。

    4. 单击“测试连接”,测试连接通过后,单击“确认”创建源端Hive MetaStore连接。

  8. 创建并运行元数据同步任务。

    1. 在大数据迁移准备页面,单击“元数据管理”,在“任务管理”页签单击“创建元数据同步任务”,右侧弹出“创建任务-元数据同步”页面,配置以下参数,并单击“确认”:
      • 任务名称:数据自定义任务名称。
      • 元数据连接:选择7创建的Hive MetaStore源端连接。
      • 数据库(可选):数据待校验的数据库名称,例如“bigdata_test”。
    2. 在任务列表中单击新创建的任务所在行的“运行任务”运行元数据同步任务。
    3. 任务运行完成后,单击任务所在行的“查看实例”查看任务实例列表。
    4. 单击“库表清单”页签,查看同步的表清单。

  9. 创建并加入表组。

    1. 在左侧导航栏选择“实施 > 大数据校验”,在“功能入口”区域单击“表管理”进入表管理页面。
    2. 在“表组”页面,单击“新增表组”,弹出新增表组窗口,配置以下参数并单击“确认”:
      • 表组名:输入自定义表组名称,例如“hive”。
      • 元数据连接:选择7创建的Hive MetaStore源端连接。
      • 校验标准:根据实际需求选择校验标准。
    3. 选择“库表清单”页签,将待校验的表添加到9.b已创建的表组中。

      在库表清单列表中勾选待校验的表,选择“表组管理 > 批量加入组”,弹出批量加入组页面,选择9.b创建的表组,单击“确认”。

    4. 加入成功后,可在库表清单列表中查看对应表的“表组名”,即为加入的表组名,例如“hive”。

  10. 创建执行机连接。

    1. 在导航栏选择“实施 > 大数据迁移准备”进入大数据迁移准备页面。
    2. 在“连接管理”页签,单击“创建连接”进入新增连接页面,“执行机”选择“CDH执行机”,单击“下一步”。
    3. 在详细配置页面配置以下参数:
      表5 源端Hive连接配置

      参数

      参数配置

      所属源

      选择“源端”。

      连接名称

      自定义连接名称,例如“CDH执行机-source”。

      迁移中心Agent

      选择MgC Agent中已启用的Agent名称。

      执行机凭证

      选择5创建的源端执行机凭证。

      执行机IP

      填写源端Hive客户端所在主机的IP地址。

      可在该主机上使用hivebeelinespark-sql命令连接到源端Hive。

      执行机连接端口

      填写连接源端Hive客户端的所在主机的端口号。

      安装目录

      填写源端Hive客户端所在目录。

      SQL文件地址

      手动创建用于存放SQL文件的目录。

    4. 单击“测试连接”,测试连接通过后,单击“确认”创建源端连接。
    5. 再次单击“创建连接”进入新增连接页面,“执行机”选择“MRS执行机”,单击“下一步”。
    6. 在详细配置页面配置以下参数:
      表6 源端Hive连接配置

      参数

      参数配置

      所属源

      选择“目的端”。

      连接名称

      自定义连接名称,例如“MRS执行机-target”。

      迁移中心Agent

      选择MgC Agent中已启用的Agent名称。

      执行机凭证

      选择5创建的目的端执行机凭证。

      执行机IP

      填写MRS执行机的连接IP,即1创建的已安装MRS集群客户端的ECS节点IP。

      执行机连接端口

      填写连接MRS集群客户端所在节点的端口号。

      安装目录

      填写MRS集群客户端安装目录。

      SQL文件地址

      手动创建用于存放SQL文件的目录。

    7. 单击“测试连接”,测试连接通过后,单击“确认”创建目的端连接。
    8. 可在连接列表中查看已创建的源端和目的端连接。

  11. 创建并运行校验任务。

    1. 在左侧导航栏选择“实施 > 大数据校验”,在“功能入口”区域单击“任务管理”进入任务管理页面。
    2. 单击页面右上方的“新增任务”,右侧弹出新增任务窗口,“大数据组件”选择“Hive”,“统计方式”选择“全量校验”,单击“下一步”。
    3. 配置以下参数并单击“保存”创建源端任务。
      表7 新增任务配置

      参数

      参数配置

      任务名

      默认创建名称为“组件类型全量校验-4位随机数(字母和数字)”,也可以自定义名称。

      表组

      选择9已创建的表组名称,例如“hive”。

      执行机连接

      选择10已创建的源端执行机连接。

      非分区表处理策略

      选择非分区表处理策略,例如“全量校验”。

      OBS桶配置检查

      根据实际需求勾选“我确认仅需在迁移中心Agent侧查看日志和内容校验结果,无需上传至OBS桶”。

      执行命令

      选择执行Hive命令的方式,支持“beeline”、“hive”和“spark-sql”,例如,选择“hive”。

    4. 参考11.b~11.c创建目标端任务,其中“执行机连接”需选择10已创建的目的端执行机连接,“执行命令”选择“beeline”。
    5. 在任务管理列表中,单击源端任务和目的端任务所在行的“执行任务”,在弹窗中单击“确定”,等待任务执行结束。

  12. 查看校验任务运行情况。

    1. 单击“实例列表”页签,查看校验任务运行情况。
    2. 在实例列表中,选择校验任务所在行的“更多 > 查看校验结果”进入校验结果页面,查看校验结果。
    3. 还可单击操作列的“查看详情”,进入校验详情页面,查看该数据表的校验详细信息。