MaxCompute提供的数据迁移服务支持通过MMA(MaxCompute Migration Assist)服务,将Hive数据安全且高效地迁移到MaxCompute。
迁移流程
使用限制
不支持迁移Hive数据至已开启Schema功能的MaxCompute项目。关于Schema介绍详情,请参见Schema操作。
已开启Schema功能不支持关闭。
步骤一:安装UDTF
使用MaxCompute迁移功能时,需要在Hive服务器上安装UDTF(Unified Data Transfer Service)并自定义Hive UDTF函数,利用Hive UDTF函数来获取、转换、上传数据到MaxCompute,以实现复杂数据的迁移。关于Hive UDTF详情,请参见UDTF。
根据Hive版本下载UDTF jar包。
执行以下命令,上传UDTF jar至HDFS。本文以
mma-udtf-hive2.jar
为例。hdfs dfs -put -f mma-udtf-hive2.jar hdfs:///tmp/
使用Beeline或Hive命令登录Hive,创建Hive UDTF。
DROP FUNCTION IF EXISTS default.odps_data_dump_multi; CREATE FUNCTION default.odps_data_dump_multi as 'com.aliyun.odps.mma.io.McDataTransmissionUDTF' USING JAR 'hdfs:///tmp/mma-udtf-hive2.jar';
加载自定义函数Hive UDTF。
需要在Beeline命令行界面,执行以下命令。
reload function;
说明如果有多个Hive Server2实例,要依次使用Beeline命令行界面,执行以上命令。
步骤二:安装并启动MMA服务
MMA网络架构图
MMA作为连接Hive网络环境和MaxCompute之间的中转节点,其网络架构图如下所示。
环境准备
计划安装MMA服务的服务器,需满足以下要求:
安装JDK 8版本的Java。
能够访问Hive MetaStore和Hive Server2,以及MaxCompute的服务接入点。
操作步骤
根据Hive版本下载对应版本的MMA jar包。本文以
mms-agent-hive2.jar
为例。在jar包相同目录下,新增并配置
config.ini
文件。config.ini
文件示例内容如下。[mms] region = cn-hangzhou endpoint = maxcompute.cn-hangzhou.aliyuncs.com access_id = LTAI5tM2iHkTd4W69nof**** access_key = S0uZvwDYDa56WZ1tjVmA67z1YS**** mc_endpoint = http://service.cn-hangzhou.maxcompute.aliyun.com/api mc_data_endpoint = http://service.cn-hangzhou.maxcompute.aliyun.com/api mc_tunnel_endpoint = http://dt.cn-hangzhou.maxcompute.aliyun.com [agent] name = mmaagent_doc is_in_vpc = false
参数说明
参数名称
是否必填
说明
region
是
Hive安装的地域ID。各地域ID详情,请参见服务接入点。
endpoint
是
MMA服务连接地址。各地域连接地址详情,请参见服务接入点。
access_id
是
阿里云账号或RAM用户的AccessKey ID。
您可以进入AccessKey管理页面获取AccessKey ID。
access_key
是
AccessKey ID对应的AccessKey Secret。
您可以进入AccessKey管理页面获取AccessKey Secret。
mc_endpoint
是
访问MaxCompute服务的连接地址。各地域及网络对应的Endpoint值,请参见Endpoint。
mc_data_endpoint
否
Hive访问MaxCompute服务的连接地址。各地域及网络对应的Endpoint值,请参见Endpoint。
说明仅MMA与Hive不在同一网络环境时,需配置此参数。
mc_tunnel_endpoint
否
Tunnel服务的外网访问链接。如果您未配置Tunnel Endpoint,Tunnel会自动路由到MaxCompute服务所在网络对应的Tunnel Endpoint。如果您配置了Tunnel Endpoint,则以配置为准,不进行自动路由。
各地域及网络对应的Tunnel Endpoint值,请参见Endpoint。
source_id
否
数据源ID。若配置此参数,当前MMA服务将与数据源绑定。
说明在数据源管理页签,单击目标数据源操作列中的编辑,然后查看URL,获取
source_id
其格式为/mms/source/{source_id}/config
。name
是
MMA服务名称,租户级别下MMA名称不能重复。本文以
mmaagent_doc
为例。is_in_vpc
否
MMA服务是否运行在阿里云VPC内,默认为false。
执行以下命令,启动MMA服务。
java -jar mms-agent-hive2.jar -c config.ini
返回如下图所示,即启动成功。
步骤三:数据迁移
前提条件
阿里云账号或RAM用户已开通MaxCompute服务。
默认只有阿里云账号可以创建、配置和删除项目以及变更项目状态,如果您需要以RAM用户管理MaxCompute项目,请确认已获取RAM用户账号并已授予AliyunMaxComputeFullAccess系统策略或自定义RAM策略权限。
更多创建或获取RAM用户信息操作,请参见准备RAM用户。
创建Hive数据源
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择
。在数据源管理页签,单击新增数据源,配置数据源参数。
基本信息
参数名称
是否必填
说明
数据源名称
是
数据源的名称。
数据源类型
是
待迁移的数据源类型,当前仅支持Hive。
Agent名称
是
选择已配置的MMA服务名称,本文创建的名称为
mmaagent_doc
。Metastore地址
是
Hive MetaStore服务的访问地址。
Jdbc连接串
是
Hive JDBC的连接信息。格式为
jdbc:hive2://localhost:10000/default
。Jdbc用户名
是
Hive JDBC的用户名称。
Jdbc密码
否
Hive JDBC的密码。
用于执行Maxcompute Sql的Project
是
选择迁移至MaxCompute的项目。
如果Hive开启了Kerberos协议认证,需要填写以下参数。
参数名称
说明
Kerberos认证
打开Kerberos协议认证开关。
说明默认是Kerberos协议认证开关是关闭的。
Kerberos Principal
Kerberos身份认证标识。
Keytab文件
上传Kerberos的服务端配置文件。
Krb5.conf文件
上传Kerberos的客户端配置文件。
其他信息,您可以根据需要选择配置以下参数。
参数名称
说明
单个任务处理的最多分区数量
需要迁移的分区数量的最大值。
单个任务处理的最大数量(单位GB)
需要迁移的分区数据大小的最大值。
Hive Job配置
Hive引擎相关的任务参数,默认为MR引擎的部分配置。
说明该配置用于解决YARN容器内存不足、指定Spark运行队列等问题。
数据库白名单
需要迁移的Hive数据库,多个值之间以英⽂逗号分隔。
数据库黑名单
不需要迁移的Hive数据库,多个值之间以英⽂逗号分隔。
Metastore访问并发量
访问Hive MetaStore的并发量,用于提高获取Hive元数据的速度。
表黑名单
不需要迁移的Hive数据库表。
单个表的格式为
dbname.tablename
, 多个表之间以英⽂逗号分隔。表白名单
需要迁移的Hive数据库表。
单个表的格式为
dbname.tablename
,多个表之间以英⽂逗号分隔。数据搬迁任务最大并发量
数据迁移并发数。
配置完成后,单击新增。
在数据源管理页签,单击数据源列表操作列中的更新元数据。
更新元数据将获取当前Hive数据源中的数据库信息。如果数据量较大,可能需要几分钟才能完成更新。
创建迁移计划
选择目标数据源,查看数据源下待迁移的数据库列表。
您可以按照实际迁移需求,选择整库迁移或部分迁移。
整库迁移
单击待迁移数据库列表操作列中的整库迁移。
部分迁移
单击待迁移数据库列表操作列中的部分迁移。
在表列表页签或分区列表页签,勾选需要迁移的表或分区。
单击新建迁移计划。
在新建迁移计划页面,配置以下参数。
参数名称
是否必填
说明
计划名称
是
迁移计划的名称。
数据源
是
Hive数据源名称。
源库
是
源数据库名称。
目标MaxCompute项目
是
目标MaxCompute项目名称。
table黑白名单
否
配置需要迁移或不需要迁移的表,多个表之间使用英文逗号进行分隔。
说明如果未配置则默认将迁移源库中的所有表。
表白(黑)名单
否
开启校验
否
校验源表与目标表的记录数。若开启校验,当校验结果不一致,会提示校验不通过。
增量迁移
否
增量迁移数据,默认开启。
说明在开启增量迁移后,已经成功迁移的分区或表数据将被跳过,不会再次进行迁移。
只迁移表结构
否
默认情况下,开启后仅迁移表结构,而不迁移数据。
分区过滤
否
配置分区过滤条件,详情请参见分区过滤表达式说明。
表名映射
否
设置迁移到目标MaxCompute项目后的表名称。
配置完成后,单击提交。
您可以在迁移计划管理页签,查看已提交的迁移计划的状态和迁移进度。
更多操作
更新或删除数据源信息
在数据源管理页签,单击目标数据源操作列中编辑或删除,进行更新或删除数据源信息。
管理迁移计划
在迁移计划管理页签,您可以进行以下操作:
停止迁移计划:单击目标迁移计划操作列中的停止。
启动迁移计划:单击目标迁移计划操作列中的开始。
删除迁移计划:单击目标迁移计划操作列中的删除。
说明删除迁移计划时,如果计划正在进行中,已完成迁移的数据将不会被删除。
查看迁移计划详情:单击目标迁移计划操作列中的详情,在迁移任务列表,单击目标迁移任务操作列中的日志,查看迁移计划的日志详情。