本文主要为您介绍如何将已有EMR集群中存储在RDS或内置MySQL中的Hive Metastore元数据迁移到DLF,并说明如何在EMR集群中切换DLF作为统一元数据,从而实现多种数据源入湖,搭建高效的数据湖解决方案。
适用场景
从其他大数据集群迁移到阿里云EMR新集群(DLF做元数据)时,元数据迁移到DLF中的具体操作,请参见元数据迁移。
从阿里云EMR集群(内置MySQL或自建RDS做元数据),整体集群需要迁移到阿里云EMR新集群(DLF做元数据)时,元数据迁移到DLF中的具体操作,请参见元数据迁移。
阿里云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元数据中。
准备工作
已创建元数据为自建RDS的EMR集群。如未创建,请参见配置自建RDS。本示例中元数据为自建RDS。
已在EMR集群中创建Hive数据库。如未创建,请参见Hive基础操作。本示例数据库为
testdb2
。在元数据迁移之前,我们需要检查数据库远程访问权限。
登录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控制台上查看和修改访问权限,详情请参见修改账号权限。
创建迁移任务
运行迁移任务
在迁移任务列表中,可以查看刚刚创建的迁移任务test_rds
,单击操作列的运行,执行任务。执行成功后如下图。
查看运行记录和日志
单击操作列的运行记录,可查看任务的执行历史。如下图:
单击操作列的查看日志,可查看任务运行的日志详情。
确认元数据迁移到DLF
在左侧菜单栏,单击
。单击数据库页签,选择数据目录,查询目标数据库名称。如下图:
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服务。
Impala
在Impala配置页面,单击部署客户端配置,然后重启Impala服务。
验证是否切换成功
以Hive引擎为例,其他引擎也可进行验证。
常见问题
Q:如果同一个元数据迁移任务,多次运行是什么结果?
A:元数据迁移任务以RDS或MySQL元数据为基准,保证DLF元数据与源库中元数据的最终一致性。可在迁移任务配置中选择冲突解决策略,详情请参见配置迁移任务信息。