迁移服务(MMA)

MaxCompute提供的数据迁移服务支持通过MMA(MaxCompute Migration Assist)服务,将Hive数据安全且高效地迁移到MaxCompute。

迁移流程

image

使用限制

不支持迁移Hive数据至已开启Schema功能的MaxCompute项目。关于Schema介绍详情,请参见Schema操作

说明

已开启Schema功能不支持关闭。

步骤一:安装UDTF

使用MaxCompute迁移功能时,需要在Hive服务器上安装UDTF(Unified Data Transfer Service)并自定义Hive UDTF函数,利用Hive UDTF函数来获取、转换、上传数据到MaxCompute,以实现复杂数据的迁移。关于Hive UDTF详情,请参见UDTF

  1. 根据Hive版本下载UDTF jar包。

  2. 执行以下命令,上传UDTF jar至HDFS。本文以mma-udtf-hive2.jar为例。

    hdfs dfs -put -f mma-udtf-hive2.jar hdfs:///tmp/
  3. 使用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';
  4. 加载自定义函数Hive UDTF。

    需要在Beeline命令行界面,执行以下命令。

    reload function;
    说明

    如果有多个Hive Server2实例,要依次使用Beeline命令行界面,执行以上命令。

步骤二:安装并启动MMA服务

MMA网络架构图

MMA作为连接Hive网络环境和MaxCompute之间的中转节点,其网络架构图如下所示。

image

环境准备

计划安装MMA服务的服务器,需满足以下要求:

  • 安装JDK 8版本的Java。

  • 能够访问Hive MetaStore和Hive Server2,以及MaxCompute的服务接入点

操作步骤

  1. 根据Hive版本下载对应版本的MMA jar包。本文以mms-agent-hive2.jar为例。

  2. 在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

  3. 执行以下命令,启动MMA服务。

    java -jar mms-agent-hive2.jar -c config.ini

    返回如下图所示,即启动成功。

    image.png

步骤三:数据迁移

前提条件

  • 阿里云账号或RAM用户已开通MaxCompute服务

  • 默认只有阿里云账号可以创建、配置和删除项目以及变更项目状态,如果您需要以RAM用户管理MaxCompute项目,请确认已获取RAM用户账号并已授予AliyunMaxComputeFullAccess系统策略或自定义RAM策略权限。

    更多创建或获取RAM用户信息操作,请参见准备RAM用户

创建Hive数据源

  1. 登录MaxCompute控制台,在左上角选择地域。

  2. 在左侧导航栏,选择数据传输 > 迁移服务

  3. 数据源管理页签,单击新增数据源,配置数据源参数。

    • 基本信息

      参数名称

      是否必填

      说明

      数据源名称

      数据源的名称。

      数据源类型

      待迁移的数据源类型,当前仅支持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,多个表之间以英⽂逗号分隔。

      数据搬迁任务最大并发量

      数据迁移并发数。

  4. 配置完成后,单击新增

  5. 数据源管理页签,单击数据源列表操作列中的更新元数据

    更新元数据将获取当前Hive数据源中的数据库信息。如果数据量较大,可能需要几分钟才能完成更新。

创建迁移计划

  1. 选择目标数据源,查看数据源下待迁移的数据库列表。

    您可以按照实际迁移需求,选择整库迁移或部分迁移。

    • 整库迁移

      单击待迁移数据库列表操作列中的整库迁移

    • 部分迁移

      1. 单击待迁移数据库列表操作列中的部分迁移

      2. 表列表页签或分区列表页签,勾选需要迁移的表或分区。

      3. 单击新建迁移计划

  2. 新建迁移计划页面,配置以下参数。

    参数名称

    是否必填

    说明

    计划名称

    迁移计划的名称。

    数据源

    Hive数据源名称。

    源库

    源数据库名称。

    目标MaxCompute项目

    目标MaxCompute项目名称。

    table黑白名单

    配置需要迁移或不需要迁移的表,多个表之间使用英文逗号进行分隔。

    说明

    如果未配置则默认将迁移源库中的所有表。

    表白(黑)名单

    开启校验

    校验源表与目标表的记录数。若开启校验,当校验结果不一致,会提示校验不通过。

    增量迁移

    增量迁移数据,默认开启。

    说明

    在开启增量迁移后,已经成功迁移的分区或表数据将被跳过,不会再次进行迁移。

    只迁移表结构

    默认情况下,开启后仅迁移表结构,而不迁移数据。

    分区过滤

    配置分区过滤条件,详情请参见分区过滤表达式说明

    表名映射

    设置迁移到目标MaxCompute项目后的表名称。

  3. 配置完成后,单击提交

    您可以在迁移计划管理页签,查看已提交的迁移计划的状态和迁移进度。

更多操作

更新或删除数据源信息

数据源管理页签,单击目标数据源操作列中编辑删除,进行更新或删除数据源信息。

管理迁移计划

迁移计划管理页签,您可以进行以下操作:

  • 停止迁移计划:单击目标迁移计划操作列中的停止

  • 启动迁移计划:单击目标迁移计划操作列中的开始

  • 删除迁移计划:单击目标迁移计划操作列中的删除

    说明

    删除迁移计划时,如果计划正在进行中,已完成迁移的数据将不会被删除。

  • 查看迁移计划详情:单击目标迁移计划操作列中的详情,在迁移任务列表,单击目标迁移任务操作列中的日志,查看迁移计划的日志详情。