EMR元数据迁移DLF最佳实践

通过EMR+DLF数据湖方案,可以为企业提供数据湖内的统一的元数据管理,统一的权限管理,支持多源数据入湖以及一站式数据探索的能力。本方案支持已有EMR集群元数据库使用RDS或内置MySQL数据库迁移DLF,通过统一的元数据管理,多种数据源入湖,搭建高效的数据湖解决方案。

本文主要介绍如何将Hive Metasstore存储在MySQL/RDS中的元数据迁移到DLF中,并介绍如何在EMR集群中配置使用DLF作为数据湖统一元数据。

适用场景

  1. 从其他大数据集群迁移到阿里云E-MapReduce产品时,元数据迁移可以参考该文档。

  2. 从阿里云EMR老集群(MySQL做元数据),整体集群需要迁移到阿里云EMR新集群(DLF做元数据)时,元数据迁移可参考该文档。

  3. 从阿里云EMR老集群(MySQL做元数据),仅元数据修改为DLF时,可以参考该文档。

    1. 注意版本:EMR主版本需要3系列>=EMR 3.33,或 4系列>= EMR 4.6 ,或 5系列>=EMR 5.1 才能使用DLF,其他更低版本需要迁移DLF,可加钉钉群:33719678

元数据迁移

准备工作

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

  • 登录RDS或MySQL元数据库,执行如下语句进行远程访问授权(以root账号,hivemeta库为例)

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

开始迁移

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

创建迁移任务

进入数据湖构建控制台,切换到EMR集群所属的区域,选择左侧菜单“元数据管理-元数据迁移”,并单击“创建迁移任务”进行配置迁移任务,如下图

image.png

源库配置

  1. 元数据库类型:选择MySQL类型即可。

  2. MySQL类型:根据Hive元数据类型选择。

    1. 集群内置MySQL,请选择“其他MySQL”。需要填写JDBC URL、用户名与密码。(建议JDBC URL填写内网ip,并通过阿里云VPC连接方式访问;如果选择公网连接,则填写公网ip)

    2. 独立RDS元数据,请选择“Aliyun RDS”。需要选择RDS实例,填写元数据库名称、用户名与密码(RDS元数据仅支持阿里云VPC连接方式访问)。

  3. 网络连接:当前支持“阿里云VPC”,“公网连接”两种方式。请根据上一步MySQL类型进行配置。

    1. 阿里云VPC即EMR集群或RDS的VPC信息

    2. 公网连接:当选择公网连接时,在EMR控制台上添加规则,使EMR集群3306端口(默认)对DLF弹性公网IP 开放。如下图所示(以杭州弹性公网IP 121.41.166.235为例 )

各region DLF弹性公网IP:

region

弹性公网IP

杭州

121.41.166.235

上海

47.103.63.0

北京

47.94.234.203

深圳

39.108.114.206

新加坡

161.117.233.48

法兰克福

8.211.38.47

张家口

8.142.121.7

香港

8.218.148.213

迁移任务配置

  1. 任务名称:输入元数据迁移任务的名称。

  2. 任务描述(可选):输入您的一些任务备注信息。

  3. 冲突解决策略(建议选择更新旧的元数据):

    1. 更新旧的元数据:在原有DLF元数据基础上更新元数据。

    2. 重建元数据,即先删除旧的DLF元数据后再新建。

  4. 日志存放路径:迁移任务会将每个元数据对象、迁移状态、错误日志(如有)记录到该OSS路径下。

  5. 同步对象:包括Database、Function、Table、Partition 四种对象,一般为全选。

  6. Location替换:适用于迁移过程中需要对table/database的location进行替换修改的情况。

运行迁移任务

在迁移任务列表中可以查看刚刚创建的迁移任务,点击右侧“运行”操作按钮执行任务,如下图。

查看运行记录和日志

单击右侧操作 “运行记录”,可以查看运行的详情信息

单击查看日志,可以查看运行中的日志信息,如下

确认元数据迁移到DLF

在元数据管理-元数据库/元数据表中,可以查询到期望同步的元数据库表信息。如下

EMR集群切换元数据

如果是上文第2种场景,需要将EMR集群切换使用DLF元数据。

引擎切换元数据

Hive

hive-site.xml添加如下配置,开启“自动配置更新”并保存,重启Hive服务。

<!-- 配置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服务。

Impala

点击“部署客户端配置”,然后重启Impala。

验证切换成功

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

1. 进入集群,执行hive命令

2. create database dlf_test_db;

3. 登录dlf页面,查看是否存在该db

4. drop database dlf_test_db;

常见问题

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

元数据迁移任务以RDS或MySQL元数据为基准,保证DLF元数据与源库中元数据的最终一致性。

参考资料

最佳实践详细步骤(包括环境搭建),参考:EMR元数据迁移数据湖DLF最佳实践