本文为您介绍如何将Hive MetaStore存储在MySQL、RDS中的元数据迁移到DLF中,并介绍如何在EMR集群中配置使用DLF作为数据湖统一元数据。
适用场景
从其他大数据集群迁移到阿里云E-MapReduce产品。
从阿里云EMR老集群(MySQL做元数据),整体集群需要迁移到阿里云EMR新集群(DLF做元数据)。
从阿里云EMR老集群(MySQL做元数据),仅元数据修改为DLF。
说明仅EMR-3.33及其后续版本、EMR-4.6及其后续版本、EMR-5.1及其后续版本才能使用DLF,并且EMR集群仅支持DLF 1.0。对于其他低于此版本的用户,需迁移至DLF,相关咨询请加入钉钉群33719678。
元数据迁移
准备工作
在元数据迁移之前,需要先检查元数据库远程访问权限、MySQL或RDS网络连接。
登录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集群所属的地域。
在左侧导航栏,选择 。
在元数据迁移页面,单击创建迁移任务。
配置源库信息。
配置以下信息,单击下一步。
参数
说明
数据库类型
选择MySQL类型即可。
MySQL类型
根据Hive元数据类型选择。
集群内置MySQL:请选择其他MySQL。需要填写JDBC URL、用户名与密码。
独立RDS元数据:请选择Aliyun RDS。需要选择RDS实例,填写元数据库名称、用户名与密码(RDS元数据仅支持阿里云VPC连接方式访问)。
网络连接
当前支持阿里云VPC、公网连接两种方式。请根据上一步MySQL类型进行配置。
阿里云VPC:即EMR集群或RDS的VPC信息。
公网连接:当选择公网连接时,在EMR控制台上添加规则,使EMR集群3306端口(默认)对DLF弹性公网IP开放。添加端口详情请参见管理安全组。
配置迁移任务。
配置以下信息,单击下一步。
参数
说明
任务名称
输入元数据迁移任务的名称。
任务描述
可选参数,输入您的一些任务备注信息。
冲突解决策略
更新旧的元数据(建议选择):在原有DLF元数据基础上更新元数据。
重建元数据,即先删除旧的DLF元数据后再新建。
日志存放路径
迁移任务会将每个元数据对象、迁移状态、错误日志(如果有的话)记录到该OSS路径下。
同步对象
包括Database、Function、Table、Partition四种对象,通常为全选。
Location替换
适用于迁移过程中需要对table、database的location进行替换修改的情况。
确认信息无误后,单击确定。
运行迁移任务。
在迁移任务列表中可以查看刚刚创建的迁移任务,单击操作列的运行执行任务。
查看运行记录和日志。
在元数据迁移页面,单击执行历史页签。
单击操作列的查看日志,可以查看详情信息。
确认元数据迁移到DLF。
在左侧导航栏,选择 。
在元数据库页签中,可以查询到期望同步的元数据库表信息。
EMR集群切换元数据
引擎切换元数据
Hive
在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 <!-- Hive 3需要配置--> hive.notification.event.poll.interval=0s <!-- EMR-3.33.0之前版本和EMR-4.6.0之前版本,需要配置 --> dlf.catalog.sts.isNewMode=false
Presto
在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.0之前版本和EMR-4.6.0之前版本,需要配置--> dlf.catalog.sts.isNewMode=false
Spark
单击部署客户端配置,然后重启Spark服务。
Impala
单击部署客户端配置,然后重启Impala服务。
验证切换情况
以Hive引擎为例进行验证。
常见问题
Q:如果同一个元数据迁移任务,多次运行是什么结果?
A:元数据迁移任务以RDS或MySQL元数据为基准,可以保证DLF元数据与源库中元数据的最终一致性,不会影响最终的准确性。