迁移元数据至LakeFormation
操作场景
用户可以参考该章节将外部的元数据迁移至LakeFormation并将数据存储在OBS中进行统一管理。
在迁移hive元数据时,为避免迁移元数据时发生路径冲突,建议hive Catalog路径与default数据库路径保持一致。
前提条件
- 当前实例已创建存储迁移元数据的Catalog。
- 待操作用户具有OBS相关操作权限、具有已创建存储迁移元数据的Catalog的操作权限。
- 已创建了用于存储迁移数据的OBS并行文件系统。
- 表的Owner只能包含字母、数字和下划线(_),且长度为1~49个字符。不能包含中划线(-)等其他字符。
- 如果需要迁移多个MRS集群中的元数据到同一个LakeFormation实例,MRS集群之间的Database名称不能重复。
- 如果需要进行多次迁移,表的列更新需要满足列排序和列类型一致的兼容性要求。
操作步骤
- 登录LakeFormation管理控制台。
- 在左侧下拉框中选择待操作的LakeFormation实例,在左侧导航栏选择“任务管理 > 任务授权”。
单击“同意授权”,对当前用户授予管理LakeFormation迁移任务权限。如果已授权则跳过该步骤。
如果需要取消用户的LakeFormation任务管理权限,请单击“取消授权”。
同意授权后,LakeFormation将自动创建名为lakeformation_job_trust的委托,在任务运行期间,请勿删除该委托。
- 在左侧导航栏选择“任务管理 > 元数据迁移”。
- 单击“创建迁移任务”,配置相关参数后,单击“提交”。
表1 创建元数据迁移任务 参数
参数说明
任务名称
填写待创建元数据迁移任务名称。
描述
所创建迁移任务的描述信息。
数据源类型
选择待迁移数据的数据源类型。支持以下类型:
- DLF:第三方数据湖构建(Data Lake Formation,DLF)
- MRS云数据库RDS(for MySQL)
- 开源HiveMetastore(for MySQL)
- MRS云数据库RDS(for PostgreSQL)
- MRS本地数据库
JDBC URL
待迁移元数据JDBC链接的URL。“数据源类型”不为“DLF”时配置该参数。
例如:
- MySQL数据源类型JDBC URL为:jdbc:mysql://IP地址:端口/数据库名称?useSSL=false&permitMysqlScheme
- PostgreSQL数据源类型JDBC URL为:jdbc:postgresql://IP地址:端口/数据库名称?socketTimeout=600
socketTimeout为迁移客户端和数据库连接的socket超时时长。
- 迁移除MRS本地数据库以外的数据源类型时,URL中的IP为数据源绑定的弹性公网IP。
用户名/密码
访问数据源所使用的用户和密码。“数据源类型”不为“DLF”时配置该参数。
如果所使用用户存在密码,则必须填写;如果用户无密码,则为空即可。
服务接入点
配置待迁移元数据服务接入点。
“数据源类型”为“DLF”时配置该参数。
Access Key/Secret Key
AK/SK信息,请联系DLF服务运维人员获取。“数据源类型”为“DLF”时配置该参数。
源Catalog
待迁移元数据所属Catalog名称。
迁移至Catalog
元数据迁移至LakeFormation中Catalog的名称。
冲突解决策略
迁移过程中发生冲突的解决策略。
当前仅支持“创建并更新元数据”。
日志存储位置
运行迁移任务时,产生的日志存储位置。可单击
进行选择。
该路径必须已在OBS中存在,如果为自定义路径将会导致迁移任务失败。
是否强制建表
勾选此项将会跳过建立内表时对OBS路径的限制。
元数据过滤策略
迁移过程中元数据的过滤策略。
- 按元数据类型
- 按自定义规则
默认缺省Owner
迁移后元数据的默认Owner。“数据源类型”为“DLF”时配置该参数。
- 如果配置的默认Owner没有对应的元数据操作权限,迁移后的元数据将无法进行增删改查等操作,此时可以手动给Owner授权或者进行权限迁移。
- 如果迁移前所有元数据都能正常使用,则不需要配置该参数。
过滤策略存储位置
迁移的自定义元数据过滤策略文件在OBS并行文件系统中的存储位置。
“元数据过滤策略”选择“按自定义规则”时配置该参数。
过滤策略文件名
迁移的自定义元数据过滤策略文件名。
“元数据过滤策略”选择“按自定义规则”时配置该参数。
迁移元数据对象
勾选待迁移的元数据对象。“元数据过滤策略”选择“按元数据类型”时配置该参数。
- 全选:迁移数据库、函数、数据表、分区。如果为首次迁移,建议选择“全部”,迁移全部元数据。
- Database:数据库
- Function:函数。如果勾选函数,需要确认函数类名存在,否则会导致函数迁移失败。
- Table:数据表
- Partition:分区
如果仅勾选函数、数据表、分区的一种或几种时,需确保勾选元数据的上层目录存在。例如,只勾选了Table,则需要确保迁移目标Catalog中已包含该Table所在的数据库(例如DB_1),否则会导致Table迁移成功的数量将为零个。
添加location规则
执行策略
选择当前迁移任务的执行策略。
网络连接
选择网络连接方案。
选择“EIP”,使用EIP方式连接网络。
同时需要选择“安全组ID”,即数据源所在VPC的安全组ID,用于打通网络。
事件通知策略
(当前该功能为公测阶段)
(可选)配置该选项后,发生特定事件(例如任务成功、任务失败等)后会发送通知(短信、邮件等)。
- 事件通知开关:开启后表示启用事件通知。
- 事件通知主题:选择需要通知的主题,可以在管理控制台选择“消息通知服务 SMN”进行配置。
- 事件:需要通知的主题状态,可选择“任务成功”、“任务失败”。
- 创建完成后,单击“操作”列的“运行”即可运行当前迁移任务。调度策略选择“调度执行”时无需手动执行运行操作。
- 在运行迁移任务前,需要已对用户进行任务授权,详情请参考2。
- 迁移任务开始运行后,源数据库如果有新增的元数据,则新增的元数据将不会被迁移,需要再次运行迁移任务。也可以使用元数据发现功能,迁移新增的元数据,具体请参考使用元数据发现迁移元数据至LakeFormation。
- 如果任务运行失败,在修复故障后可再次单击“操作”列的“运行”进行重试。
迁移任务完成后,可以在对应的元数据界面进行查看。例如进入“元数据 > 数据库”页面查看迁移完成的数据库。
单击操作列的“编辑”或“删除”,可以修改或者删除当前任务。
- 单击“操作”列“查看日志”,可以查看运行产生的日志。可单击日志最下方超链接查看完整日志。
- 如果界面中无“查看日志”,显示为“查看任务”,可以参考如下操作查看日志:
- 单击“操作”列“查看任务”可以查看任务执行情况。
- 单击查看完整日志中的链接,可以查看运行产生的日志。
- 日志中常见报错信息及对应原因如下:
表2 日志中常见报错 日志报错信息
报错原因
field 'storageDescriptor.location' must match '^(obs|har)://.+/.+$'
请配置正确的location规则,确保元数据路径以“obs://”开头。
Invalid input parameter
元数据的入参非法,或者LakeFormation暂时不支持此类元数据。
Incorrect type of column xxx.
列类型非法,或者LakeFormation不兼容此列类型。
No permission to perform this operation on resources.
请检查默认缺省Owner是否配置正确,以及是否有元数据操作权限。
Error creating transactional connection factory
LakeFormation服务端与数据源连接不通。解决思路如下:
输入的vpc网段与lakeformation网段冲突
选择VPC对等连接时,数据源所在的VPC网段和LakeFormation服务端所在网段冲突。此时可以选择EIP方式进行迁移。
无日志内容
请确认日志路径是否存在。
- 日志路径已存在,请联系LakeFormation运维人员协助处理。
- 日志路径不存在,请修改任务配置中的日志路径,确保日志路径在OBS中存在。
The path should be a sub path of the catalog storage location or database location list
路径应为Catalog存储位置或者数据库存储位置列表的子路径。
Incorrect Partition Value
输入的分区值错误, 请检查输入的表的分区键列表与输入的分区值列表数量和类型是否匹配。
Database does not exist
数据库不存在,请检查数据库是否存在。
Location doesn't exist in the OBS Parallel File Systems
路径在OBS并行文件系统中不存在。
Folder obs://xxxx/yyyy/ is not empty in the OBS
建表时OBS目录不能非空,迁移时需要勾选强制建表选项跳过该建表限制。
- 如果界面中无“查看日志”,显示为“查看任务”,可以参考如下操作查看日志: