本文为您介绍如何将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,其他更低版本需要迁移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集群切换元数据
引擎切换元数据
- 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元数据与源库中元数据的最终一致性,不会影响最终的准确性。