全部产品
Search
文档中心

数据湖构建:EMR元数据迁移DLF最佳实践

更新时间:Jun 04, 2026

本文主要为您介绍如何将已有EMR集群中存储在RDS或内置MySQL中的Hive Metastore元数据迁移到DLF,并说明如何在EMR集群中切换DLF作为统一元数据,从而实现多种数据源入湖,搭建高效的数据湖解决方案。

适用场景

image
  1. 从其他大数据集群迁移到阿里云EMR新集群(DLF做元数据)时,元数据迁移到DLF中的具体操作,请参见元数据迁移

  2. 从阿里云EMR集群(内置MySQL或自建RDS做元数据),整体集群需要迁移到阿里云EMR新集群(DLF做元数据)时,元数据迁移到DLF中的具体操作,请参见元数据迁移

  3. 阿里云EMR集群(内置MySQL或自建RDS做元数据),仅元数据修改为DLF时,可参考EMR集群引擎切换元数据

重要
  • EMR主版本需要3系列>=EMR 3.33,或 4系列>= EMR 4.6 ,或 5系列>=EMR 5.1 才能使用DLF。

  • 其他更低版本需要迁移DLF,可加钉钉群:33719678。

元数据迁移

DLF提供了可视化的元数据迁移功能,可以快速地将Hive Metastore元数据迁移到DLF元数据中。

准备工作

  1. 已创建元数据为自建RDS的EMR集群。如未创建,请参见配置自建RDS。本示例中元数据为自建RDS。

  2. 已在EMR集群中创建Hive数据库。如未创建,请参见Hive基础操作。本示例数据库为testdb2

  3. 在元数据迁移之前,我们需要检查数据库远程访问权限

    • 登录RDS或MySQL数据库,执行如下语句进行远程访问授权(以root账号,testdb库为例),其中xxxx为root用户的密码。

      CREATE USER 'root'@'%' IDENTIFIED BY 'xxxx';
      GRANT ALL PRIVILEGES ON testdb.* TO 'root'@'%' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
    • 如果是RDS数据库,也可以在RDS控制台上查看和修改访问权限,详情请参见修改账号权限

      在RDS实例左侧导航栏单击账号管理,可在用户账号页签查看已创建的账号列表,包含账号名称、类型(高权限账号或普通账号)、状态、所属数据库及其权限(如读写DDL+DML),并可执行重置密码修改权限删除等操作。

创建迁移任务

  1. 登录数据湖构建控制台

  2. 切换到EMR集群所属的地域。

  3. 在左侧菜单栏,单击元数据 > 元数据迁移

  4. 迁移任务页签,单击创建迁移任务

  5. 配置源库信息。配置参数详情,请参见创建元数据迁移任务

    在源库配置页面,数据库类型选择MySQL,类型选择Aliyun RDS,选择对应的RDS实例,填写数据库名称(如testdb2)、用户名密码网络连接方式选择阿里云VPC,并配置对应的专有网络VPC交换机VSwitch安全组,然后单击下一步

  6. 配置迁移任务。本示例任务名称为test_rds

    基础设置区域,任务描述填写test。在迁移策略区域,数据目录选择rds冲突解决策略选择更新旧的元数据日志存放路径设置为对应的OSS路径,同步对象全选(包括database、function、table、partition)。配置完成后单击下一步

  7. 确认任务配置信息无误,单击确定,创建任务完成。

运行迁移任务

在迁移任务列表中,可以查看刚刚创建的迁移任务test_rds,单击操作列的运行,执行任务。执行成功后,任务状态显示为成功。

查看运行记录和日志

  1. 单击操作列的运行记录,可查看任务的执行历史。

    执行历史页面以表格形式展示各作业的作业ID/任务名称数据库类型最近执行状态成功数量/失败数量最近执行时间完成时间/持续时间等信息,单击操作列的查看日志可查看对应作业的执行日志。

  2. 单击操作列的查看日志,可查看任务运行的日志详情。

确认元数据迁移到DLF

  1. 在左侧菜单栏,单击元数据 > 元数据管理

  2. 单击数据库页签,选择数据目录,查询目标数据库名称

    查询结果中显示目标数据库(如testdb2)的记录,包括库名、位置、数据目录ID及创建时间等信息,表明元数据已成功迁移到DLF。

EMR集群引擎切换元数据

阿里云EMR集群的元数据存储从MySQL切换至DLF,需更新相关配置,以确保EMR能够正确地与DLF集成并利用其提供的元数据管理功能。

Hive

hive-site.xml修改如下配置,保存配置并使配置生效,具体操作请参见修改配置项

重要

如需指定数据目录,请配置 dlf.catalog.id 参数,否则元数据将默认创建在 default 数据目录下。

<!-- 配置dlf 元数据服务地址,region替换为集群所在的region,比如cn-hangzhou -->
dlf.catalog.endpoint=dlf-vpc.{regionId}.aliyuncs.com
<!-- 注意:复制粘贴后检查下,不要有空格!! -->
hive.imetastoreclient.factory.class=com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory
dlf.catalog.akMode=EMR_AUTO
dlf.catalog.proxyMode=DLF_ONLY
<!-- Hive3需要配置 -->
hive.notification.event.poll.interval=0s
<!--EMR-3.33版本之前和EMR-4.6.0之前,需要配置-->
dlf.catalog.sts.isNewMode=false

Presto

在hive.properties中添加如下配置,保存配置并使配置生效,具体操作请参见添加配置项

hive.metastore=dlf
<!-- 配置dlf 元数据服务地址,region替换为集群所在的region,比如cn-hangzhou -->
dlf.catalog.endpoint=dlf-vpc.{regionId}.aliyuncs.com
dlf.catalog.akMode=EMR_AUTO
dlf.catalog.proxyMode=DLF_ONLY
<!-- 请参考hive组件hive-site.xml中配置的hive.metastore.warehouse.dir值 -->
dlf.catalog.default-warehouse-dir= <!-- 与hive.metastore.warehouse.dir值相同 -->
<!--EMR-3.33版本之前和EMR-4.6.0之前,需要配置-->
dlf.catalog.sts.isNewMode=false

Spark

在Spark配置页面,单击部署客户端配置,然后重启Spark服务。

Impala

在Impala配置页面,单击部署客户端配置,然后重启Impala服务。

验证是否切换成功

以Hive引擎为例,其他引擎也可进行验证。

  1. 使用SSH方式登录集群,详情请参见登录集群

  2. 执行以下命令,进入Hive命令行。

    hive
  3. 执行以下命令,创建数据库。本文示例中的数据库以dlf_test_db为例介绍。

    CREATE database if NOT EXISTS dlf_test_db;

    当返回信息包含OK时,表示创建数据库dlf_test_db成功。

  4. 登录数据湖构建控制台

  5. 在左侧菜单栏,选择元数据 > 元数据管理

  6. 单击数据库页签,选择相应的数据目录,在数据库名称中查询dlf_test_db是否存在。

    若存在,表示切换DLF元数据成功。否则,切换失败。

常见问题

Q:如果同一个元数据迁移任务,多次运行是什么结果?

A:同一个元数据迁移任务,多次运行结果一致。元数据迁移任务以RDS或MySQL元数据为基准,保证DLF元数据与源库中元数据的最终一致性。可在迁移任务配置中选择冲突解决策略,详情请参见配置迁移任务信息