全部产品
Search
文档中心

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

更新时间:Dec 18, 2024

本文主要为您介绍如何将已有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控制台上查看和修改访问权限,详情请参见修改账号权限

      image

创建迁移任务

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

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

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

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

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

    image

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

    image

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

运行迁移任务

在迁移任务列表中,可以查看刚刚创建的迁移任务test_rds,单击操作列的运行,执行任务。执行成功后如下图。

image

查看运行记录和日志

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

    image

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

确认元数据迁移到DLF

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

  2. 单击数据库页签,选择数据目录,查询目标数据库名称。如下图:

    image

EMR集群引擎切换元数据

阿里云EMR集群(MySQL做元数据),仅元数据修改为DLF时,需要将EMR集群切换使用DLF元数据。

Hive

hive-site.xml修改如下配置,开启自动配置更新,并保存,重启Hive服务。详情请参见修改配置项

重要

如需指定数据目录,请配置 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中添加如下配置,开启自动配置更新,并保存,重启Presto服务。详情请参见添加配置项

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服务。

image

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是否存在。如下图:

    image

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

常见问题

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

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