文档首页/ MapReduce服务 MRS/ 最佳实践/ 数据分析/ 实时OLAP数据分析/ 通过CDM将Hive外表数据迁移到MRS Doris
更新时间:2025-09-04 GMT+08:00
分享

通过CDM将Hive外表数据迁移到MRS Doris

应用场景

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

离线数据,端到端时延无要求的场景下,可使用CDM进行将离线的Hive外表数据迁移到MRS Doris。

方案架构

离线数据可以从数据湖加载,也可以直接加载本地文件。从数据湖加载可以使用工具CDM,在没有CDM工具时,可以直接使用外表加载、BrokerLoad的方式。

本地文件加载则使用Doris自带的StreamLoad工具。

图1 离线数据加载
  • 场景特点:

    业务特点为离线数据,端到端时延无要求,仅对数据集市中的数据查询时延有要求,如离线报表场景、实时报表的数据初始化场景。

  • 数据加载方式:
    • 在存在DataArts Studio工具的场景下,数据加载统一使用CDM进行(DataArts Studio需要2.10及以上版本)。
    • 在不存在DataArts Studio工具的场景下,可以使用Spark或者外表方式加载。由数据加工方进行数据推送加载时,推荐使用BrokerLoad加载方式,方便数据加工方统一调度;如果有数据应用方负责数据加载,则使用外表方式进行数据加载较为方便应用层另外配置加载数据。
    • 在没有数据湖的场景下,轻量化数仓场景中,数据直接由源端文件加载到Doris中,可以使用Streamload方式加载本地文件。
  • 注意事项:

    Hive外表通过整体添加Hive的MetaStore的方式,将全量元数据在Doris中呈现。

约束与限制

DataArts Studio实例、CDM集群、MRS集群需要具有相同的“虚拟私有云”和“安全组”。

步骤1:创建MRS集群并配置

  1. 已创建DataArts Studio实例。

    详细操作请参考购买DataArts Studio实例,实例创建后需记录“虚拟私有云”和“安全组”信息。

  2. 已创建CDM集群。

    详细操作请参考创建CDM集群,其中“虚拟私有云”和“安全组”需要与已创建的DataArts Studio实例保持一致。

  3. 创建具有访问OBS权限的ECS委托。

    详细操作请参考配置MRS集群通过IAM委托对接OBS中“创建具有访问OBS权限的ECS委托”部分,例如委托名称为“mrs_ecs_obs”。

  4. 创建包含Hive、Spark等组件的MRS集群。

    1. 创建MRS集群。

      详细操作请参考自定义购买MRS集群,例如相关参数如下:

      • 集群名称:自定义,例如“mrs_test”
      • 版本类型:LTS版
      • 集群版本:MRS 3.3.0-LTS
      • 集群组件包含:Hive、Spark等
      • “虚拟私有云”和“安全组”需要与已创建的DataArts Studio实例保持一致。
      • Kerberos认证:开启

      其他参数根据实际需要进行配置。

    2. 等待集群创建成功后,在MRS管理控制台“现有集群”中单击已创建的MRS集群名称。

      在集群“概览”页签单击“委托”后的“选择委托”,选择已创建的委托名称(例如“mrs_ecs_obs”),单击“确定”。

      图2 选择委托
    3. 创建拥有Hive权限的用户。
      1. 登录集群Manager页面,详细操作请参考访问MRS集群Manager
      2. 在Manager界面选择“系统 > 权限 > 角色”创建一个Hive角色(例如“hiverole”),详细操作请参考创建Hive角色
      3. 选择“系统 > 权限 > 用户 > 添加用户”,根据界面提示创建一个人机用户(例如hiveuser),并绑定新创建的Hive角色(例如“hiverole”)。
      4. 使用新创建的用户(例如hiveuser)登录Manager,并根据提示修改初始密码。
    4. 集群购买完成后安装集群全量客户端,详细操作请参考安装客户端(3.x版本)

      例如客户端安装路径为“/opt/client”。

    5. 在本示例中,MRS Hive外表中已存在数据,订单表lineorder且有存量数据。

      建表语句参考:

      CREATE TABLE `lineorder`(
        `lo_orderkey` bigint,
        `lo_linenumber` int,
        `lo_custkey` bigint,
        `lo_partkey` bigint,
        `lo_suppkey` bigint,
        `lo_orderpriority` varchar(100),
        `lo_shippriority` int,
        `lo_quantity` int,
        `lo_extendedprice` bigint,
        `lo_ordtotalprice` bigint,
        `lo_discount` int,
        `lo_revenue` bigint,
        `lo_supplycost` int,
        `lo_tax` int,
        `lo_commitdate` date,
        `lo_shipmode` varchar(100)
      ) PARTITIONED BY (`lo_orderdate` date) LOCATION 'obs目录';

  5. 创建MRS Doris集群,并在Doris集群内节点安装MySQL客户端。

    1. 创建MRS Doris集群。

      详细操作请参考自定义购买MRS集群,例如相关参数如下:

      • 集群名称:自定义,例如“mrs_doris”。
      • 版本类型:LTS版
      • 集群版本:MRS 3.3.0-LTS
      • 组件选择:Doris集群
      • “虚拟私有云”和“安全组”需要与已创建的DataArts Studio实例保持一致。
      • Kerberos认证:开启

      其他参数根据实际需要进行配置。

    2. 等待集群创建成功后,在MRS管理控制台“现有集群”中单击已创建的MRS集群名称。

      在集群“概览”页签单击“委托”后的“选择委托”,选择已创建的委托名称(例如“mrs_ecs_obs”),单击“确定”。

    3. 在Doris集群安装MySQL客户端。

      详细操作请参考使用MySQL客户端连接Doris

    4. 创建拥有Doris管理权限的人机用户(例如用户名为dorisuser),并修改初始密码。
      1. 登录Doris集群Manager页面。
      2. 选择“系统 > 权限 > 角色 > 添加角色”,填写角色名称,如“dorisrole”,在“配置资源权限”选择“待操作的集群 > Doris”,勾选“Doris管理员权限”,单击“确定”。
      3. 选择“用户 > 添加用户”,填写用户名称,如“dorisuser”,“用户类型”选择“人机”,“密码策略”默认,输入用户密码并确认密码,关联“dorisrole”角色,单击“确定”。
      4. 使用新建的dorisuser用户重新登录FusionInsight Manager,修改该用户初始密码。
    5. 创建Doris数据库。
      1. 使用dorisuser用户登录FusionInsight Manager页面。
      2. 选择“集群 > 服务 > Doris”。
      3. 在概览页面,单击“FE WebUI”右侧的超链接进入Doris WebUI登录页面。
      4. 输入具有Doris管理权限的用户名和密码,单击“Login”。
      5. 在“Playground”中输入以下命令创建数据库。
        create database databasename;

步骤2:在CDM创建Hive和Doris连接

  1. 创建CDM MRS Hive支持OBS的连接。

    1. 在CDM集群管理界面,单击集群后的“作业管理”,选择“连接管理 > 新建连接”,进入连接器类型的选择界面。
    2. 连接器类型选择“MRS Hive”,单击“下一步”,参考下表配置MRS Hive连接的参数,其它配置保持默认即可。
      表1 MRS Hive连接参数

      参数名

      取值样例

      说明

      名称

      hive_obs_link

      连接的名称,自定义。

      Manager IP

      x.x.x.x

      MRS Manager的浮动IP地址,可以单击输入框后的“选择”来选定已创建的MRS集群,CDM会自动填充下面的鉴权参数。

      此处选择新创建的包含Hive组件的MRS集群。

      认证类型

      KERBEROS

      访问MRS的认证类型

      Hive版本

      HIVE_3_X

      Hive的版本。根据服务端Hive版本设置。

      用户名

      hiveuser

      新创建的拥有Hive权限的用户。

      密码

      xxx

      填写用户密码,此处填写为修改后的hiveuser用户密码。

      开启LDAP认证

      通过代理连接的时候,此项可配置。

      OBS支持

      开启后,在创建Hive表时,您可以指定将表存储在OBS中。

      访问标识(AK)

      xxxxx

      此处AK/SK对应的账号应具备OBS Buckets Viewer系统权限,否则会无法访问OBS并报“403 AccessDenied”错误。

      您需要先创建当前账号的访问密钥,并获得对应的AK和SK。

      1. 登录控制台,在用户名下拉列表中选择“我的凭证”。
      2. 进入“我的凭证”页面,选择“访问密钥 > 新增访问密钥”。
      3. 单击“确定”,根据浏览器提示,保存密钥文件。密钥文件会直接保存到浏览器默认的下载文件夹中。打开名称为“credentials.csv”的文件,即可查看访问密钥AK(Access Key Id)和SK(Secret Access Key)。

      密钥(SK)

      xxxxxx

      运行模式

      EMBEDDED

      • EMBEDDED:连接实例与CDM运行在一起,该模式性能较好。
      • STANDALONE:连接实例运行在独立进程。

      检查Hive JDBC连通性

      是否需要测试Hive JDBC连通。

      是否使用集群配置

      您可以通过使用集群配置,简化Hadoop连接参数配置。

      图3 创建MRS Hive连接
    3. 单击“测试”,测试连接通过。
    4. 单击“保存”。

  2. 创建CDM MRS Doris数据连接。

    1. 上传MySQL驱动。
      1. 进入CDM主界面,单击左侧导航上的“集群管理”,选择CDM集群后的“作业管理 > 连接管理 > 驱动管理”,进入驱动管理页面。
      2. 在“驱动管理”页面,单击MySQL驱动“建议版本”列中的资料链接,按照相应指导获取驱动文件。
      3. 在“驱动管理”页面中,选择以下方式上传MySQL驱动。

        方式一:单击对应驱动名称右侧操作列的“上传”,选择本地已下载的驱动。

        方式二:单击对应驱动名称右侧操作列的“从sftp复制”,配置sftp连接器名称和驱动文件路径。

    2. 在“集群管理”界面,单击集群后的“作业管理”,选择“连接管理 > 新建连接”,进入连接器类型的选择界面。
    3. 连接器类型选择“MySQL”,单击“下一步”,参考下表配置MySQL连接的参数,其它配置保持默认即可。
      表2 MRS Doris连接参数

      参数名

      取值样例

      说明

      名称

      doris_link

      连接的名称,自定义。

      数据库服务器

      x.x.x.x

      Doris实例FE的IP。

      可通过登录MRS Doris集群的Manager界面,选择“集群 > 服务 > Doris > 实例”,查看任一FE实例的业务IP地址获取。

      端口

      9030

      Doris FE的查询连接端口,默认为9030。

      可通过登录MRS Doris集群的Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置”,搜索并查看“query_port”参数值获取。

      数据库名称

      databasename

      已创建的数据库名称。

      用户名

      dorisuser

      新创建的拥有Doris权限的用户。

      密码

      xxx

      填写用户密码,此处填写为修改后的dorisuser用户密码。

      图4 创建MRS Doris连接
    4. 单击“测试”,测试连接通过。
    5. 单击“保存”。

步骤3:Hive外表数据通过CDM迁移到Doris

  1. 创建Doris的Unique表。

    1. 登录Doris集群中已安装好MySQL客户端的节点,执行如下命令进入Doris数据库。
      export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1 //若集群已启用Kerberos认证(安全模式)需执行该命令。
      mysql -u数据库登录用户 -p数据库登录用户密码 -P数据库连接端口 -hDoris FE实例IP地址
      • 数据库连接端口为Doris FE的查询连接端口,可通过登录MRS Doris集群的Manager界面,选择“集群 > 服务 > Doris > 实例”,查看任一FE实例的业务IP地址获取。
      • Doris FE实例IP地址可通过登录MRS Doris集群的Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置”,搜索并查看“query_port”参数值获取。
    2. 执行以下命令创建Doris的Unique表,写入数据不重复。
      create database test;
      use test;
      CREATE TABLE `lineorder_u` (
        `LO_ORDERKEY` bigint NOT NULL COMMENT "订单id",
        `LO_LINENUMBER` int NOT NULL COMMENT "订单码",
        `LO_CUSTKEY` bigint NOT NULL COMMENT "客户id",
        `LO_PARTKEY` bigint NOT NULL COMMENT "商品id",
        `LO_SUPPKEY` bigint NOT NULL COMMENT "供应商id",
        `LO_ORDERDATE` date DEFAULT NULL COMMENT "订单日期",
        `LO_ORDERPRIORITY` varchar(100) DEFAULT NULL COMMENT "订单优先级",
        `LO_SHIPPRIORITY` int DEFAULT NULL COMMENT "物流优先级",
        `LO_QUANTITY` int DEFAULT NULL COMMENT "数量",
        `LO_EXTENDEDPRICE` bigint DEFAULT NULL COMMENT "扩展价格",
        `LO_ORDTOTALPRICE` bigint DEFAULT NULL COMMENT "订单总价",
        `LO_DISCOUNT` int DEFAULT NULL COMMENT "折扣",
        `LO_REVENUE` bigint DEFAULT NULL COMMENT "收入",
        `LO_SUPPLYCOST` int DEFAULT NULL COMMENT "成本",
        `LO_TAX` int DEFAULT NULL COMMENT "税款",
        `LO_COMMITDATE` date DEFAULT NULL COMMENT "承诺日期",
        `LO_SHIPMODE` varchar(100) NOT NULL COMMENT "运输方式"
      ) UNIQUE KEY (
        `LO_ORDERKEY`,
        `LO_LINENUMBER`,
        `LO_CUSTKEY`,
        `LO_PARTKEY`,
        `LO_SUPPKEY`,
        `LO_ORDERDATE`
      ) PARTITION BY RANGE(`LO_ORDERDATE`) (
        PARTITION `p1992`
        VALUES
          LESS THAN ("1993-01-01"),
          PARTITION `p1993`
        VALUES
          LESS THAN ("1994-01-01"),
          PARTITION `p1994`
        VALUES
          LESS THAN ("1995-01-01"),
          PARTITION `p1995`
        VALUES
          LESS THAN ("1996-01-01"),
          PARTITION `p1996`
        VALUES
          LESS THAN ("1997-01-01"),
          PARTITION `p1997`
        VALUES
          LESS THAN ("1998-01-01"),
          PARTITION `p1998`
        VALUES
          LESS THAN ("1999-01-01"),
          PARTITION `p1999`
        VALUES
          LESS THAN ("2000-01-01"),
          PARTITION `p2000`
        VALUES
          LESS THAN ("2001-01-01"),
          PARTITION `p2001`
        VALUES
          LESS THAN ("2002-01-01")
      ) DISTRIBUTED BY HASH(`LO_ORDERDATE`) BUCKETS 1 PROPERTIES (
        "replication_allocation" = "tag.location.default: 3"
      );

  2. 创建CDM作业,迁移Hive数据到Doris。

    1. 进入CDM集群管理界面,单击待操作集群后的“作业管理”。
    2. 选择“表/文件迁移 > 新建作业”,进入作业配置界面。参考下表配置相关参数,其它配置保持默认即可。
      表3 新建作业参数

      参数名

      取值样例

      说明

      作业名称

      hive2doris_u

      自定义。

      源连接名称

      hive_obs_link

      选择已创建的Hive连接名称。

      数据库名称

      databasename1

      根据实际情况配置。

      表名

      tablename1

      根据实际情况配置。

      目的连接名称

      doris_link

      选择已创建的Doris连接名称。

      模式或表空间

      databasename2

      数据库名,根据实际情况配置。

      表名

      tablename2

      根据实际情况配置。

      图5 新建作业
    3. 单击“下一步”进入字段映射的操作页面。确认字段映射界面字段映射正确。
    4. 单击“下一步”,确认配置界面信息。若迁移数据量较大,可适当调整“抽取并发数”参数。
      图6 任务配置
    5. 单击“保存并运行”回到作业管理界面,并等待作业运行成功。

  3. 进入Doris客户端,查看数据迁移情况。

    1. 登录Doris集群中已安装好MySQL客户端的节点,执行如下命令进入Doris数据库。
      export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1 //若集群已启用Kerberos认证(安全模式)需执行该命令。
      mysql -u数据库登录用户 -p数据库登录用户密码 -P数据库连接端口 -hDoris FE实例IP地址
      • 数据库连接端口为Doris FE的查询连接端口,可通过登录MRS Doris集群的Manager界面,选择“集群 > 服务 > Doris > 实例”,查看任一FE实例的业务IP地址获取。
      • Doris FE实例IP地址可通过登录MRS Doris集群的Manager界面,选择“集群 > 服务 > Doris > 配置 > 全部配置”,搜索并查看“query_port”参数值获取。
    2. 执行以下语句,查看数据迁移情况。
      create database test;
      use test;
      select count(*) from lineorder_u;
      select * from lineorder_u;
    3. 查看数据迁移情况符合预期。

      Doris的unique字段重复的数据只保留最后写入的数据。

      例如Hive表数据共20行,其中10行数据对应Doris的unique字段重复。

      Doris的unique表数据:

相关文档