本文主要为您介绍如何将已有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控制台上查看和修改访问权限,详情请参见修改账号权限。
在RDS实例左侧导航栏单击账号管理,可在用户账号页签查看已创建的账号列表,包含账号名称、类型(高权限账号或普通账号)、状态、所属数据库及其权限(如读写DDL+DML),并可执行重置密码、修改权限、删除等操作。
-
创建迁移任务
-
登录数据湖构建控制台。
-
切换到EMR集群所属的地域。
-
在左侧菜单栏,单击。
-
在迁移任务页签,单击创建迁移任务。
-
配置源库信息。配置参数详情,请参见创建元数据迁移任务。
在源库配置页面,数据库类型选择MySQL,类型选择Aliyun RDS,选择对应的RDS实例,填写数据库名称(如
testdb2)、用户名和密码。网络连接方式选择阿里云VPC,并配置对应的专有网络VPC、交换机VSwitch和安全组,然后单击下一步。 -
配置迁移任务。本示例任务名称为
test_rds。在基础设置区域,任务描述填写
test。在迁移策略区域,数据目录选择rds,冲突解决策略选择更新旧的元数据,日志存放路径设置为对应的OSS路径,同步对象全选(包括database、function、table、partition)。配置完成后单击下一步。 -
确认任务配置信息无误,单击确定,创建任务完成。
运行迁移任务
在迁移任务列表中,可以查看刚刚创建的迁移任务test_rds,单击操作列的运行,执行任务。执行成功后,任务状态显示为成功。
查看运行记录和日志
-
单击操作列的运行记录,可查看任务的执行历史。
执行历史页面以表格形式展示各作业的作业ID/任务名称、数据库类型、最近执行状态、成功数量/失败数量、最近执行时间、完成时间/持续时间等信息,单击操作列的查看日志可查看对应作业的执行日志。
-
单击操作列的查看日志,可查看任务运行的日志详情。
确认元数据迁移到DLF
-
在左侧菜单栏,单击。
-
单击数据库页签,选择数据目录,查询目标数据库名称。
查询结果中显示目标数据库(如
testdb2)的记录,包括库名、位置、数据目录ID及创建时间等信息,表明元数据已成功迁移到DLF。
EMR集群引擎切换元数据
阿里云EMR集群的元数据存储从MySQL切换至DLF,需更新相关配置,以确保EMR能够正确地与DLF集成并利用其提供的元数据管理功能。
Hive
在hive-site.xml中修改如下配置,保存配置并使配置生效,具体操作请参见修改配置项。
如需指定数据目录,请配置 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中添加如下配置,保存配置并使配置生效,具体操作请参见添加配置项。
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元数据与源库中元数据的最终一致性。可在迁移任务配置中选择冲突解决策略,详情请参见配置迁移任务信息。