本文为您介绍如何将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元数据与源库中元数据的最终一致性,不会影响最终的准确性。
