通过数据迁移服务MMS(MaxCompute Migration Service)迁移数据前,需新增数据源,确保数据源与MMS服务网络连通,并将数据源的元数据同步至MMS服务,以便配置后续的迁移作业。
迁移模式介绍
从MaxCompute迁移到MaxCompute的场景下,迁移任务主要有两种模式。不同的模式下,权限和网络有不同的配置要求,迁移费用也不同。
同region迁移-使用SQL迁移数据
迁移任务主要通过SQL模式读写MaxCompute。
跨region迁移-使用Spark+开放存储
迁移任务主要通过Spark调用开放存储接口读写数据。
迁移费用
MMS数据迁移会消耗各类资源从而产生消费,主要组成费用如下:
MMS操作 | 计费项 |
数据源运行过程,包括元数据同步。 | 计算费用:Spark作业消耗计算资源产生。 |
同region迁移-使用SQL迁移数据 | 计算费用:
|
跨region迁移-使用Spark+开放存储 | 计算费用:
开放存储数据传输费用:由源端产生。 VPC网络费用:源端和目标端的VPC网络打通产生。 |
操作步骤
目标端MaxCompute项目已完成准备工作。
步骤一:源端MaxCompute项目准备
权限配置
使用源端账号配置数据源的元数据同步权限和数据迁移权限。
数据源的元数据同步权限
MaxCompute源端项目需创建服务关联角色(AliyunServiceRoleForMaxComputeMMS)。
注意此处应使用源端账号创建服务关联角色。
若当前用户使用账号为阿里云主账号,可以直接操作创建服务关联角色;
若当前用户为RAM用户,则需要先授予RAM用户操作权限
AliyunRAMFullAccess,操作详情参考为RAM角色授权。创建服务关联角色有两种方式:通过MaxCompute控制台和通过RAM控制台,操作步骤如下:
通过MaxCompute控制台
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择。
在数据源页签,单击新增数据源。
在弹出的MaxCompute服务关联角色对话框中,单击确认,即可创建成功。若未自动弹出该对话框,则表明该角色已创建。
通过RAM控制台
登录RAM控制台。
在左侧导航栏选择。
在角色页面,单击创建角色。
在创建角色页面的右上角,单击创建服务关联角色。
在创建服务关联角色页面,选择信任的云服务
AliyunServiceRoleForMaxComputeMMS,单击创建服务关联角色。
配置MaxCompute源端项目的相关数据操作权限。
使得MMS获取源端元数据信息并在迁移过程中读取数据。注意此处应使用源端账号配置操作权限。建议直接赋予admin角色。
通过SQL配置
使用本地客户端(odpscmd)连接MaxCompute,添加已创建的服务关联角色。
USE <target_projectname>; -- 为用户添加服务关联角色。 Add USER `RAM$<account_id>:role/AliyunServiceRoleForMaxComputeMMS`;给用户授予权限。
MaxCompute支持不同粒度权限控制,在项目实际运行过程中,可根据人员操作范畴精细化授权。
-- 授予项目级数据操作权限。 GRANT Read|Write|List|CreateTable|CreateInstance|CreateFunction|CreateResource|All ON project <project_name> TO USER `RAM$<account_id>:role/AliyunServiceRoleForMaxComputeMMS`; -- 授予表级数据操作权限。 GRANT Describe|Select|Alter|Update|Drop|ShowHistory|All ON table <table_name> [(<column_list>)] TO USER `RAM$<account_id>:role/AliyunServiceRoleForMaxComputeMMS`; -- 授予实例级数据操作权限。 GRANT Read|Write|All ON instance <instance_id> [(<column_list>)] TO USER `RAM$<account_id>:role/AliyunServiceRoleForMaxComputeMMS`;
参数说明:
target_projectname:必填,目标项目空间的名称。
account_id:必填,阿里云主账号名称。
privileges:必填,被授予的操作权限名称。单次授权可以指定多个操作,多个操作名称之间使用半角逗号(,)分隔。
通过MaxCompute控制台配置
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择。
在项目管理页面,单击目标项目操作列的管理。
在项目配置页面,选择角色权限页签。
在弹出的新建角色对话框,根据界面提示文案配置项目信息,单击确定。
该步骤目的是在MaxCompute中单独创建一个项目角色,并为该角色单独授予专用于MMS的数据操作权限。也可选择使用项目内置的admin角色,无需通过该步骤新增角色,直接执行下一步骤。
配置参数如下:
参数
是否必填
描述
角色名称
必填
字母开头,可包含字母和数字,长度不超过64个字符
角色类型
必填
Admin:管理类型角色。
支持通过Policy授予管理类型权限,不支持授予资源权限;
不支持通过ACL方式授予管理类权限。
Resource:资源类型角色。
支持通过Policy或ACL方式授予资源类型权限,不支持授予管理类型权限
授权方式
必填
为用户授予项目、表、模型、资源、函数或实例的操作权限。可授予的权限列表如下:
对象
权限
Table
Describe、Select、Update、Alter、Drop、ShowHistory、Download
Resource
Read、Write、Download、Delete
Function
Read、Write、Download、Execute、Delete
Package
Read
Project
Read、Write、List、CreateTable、CreateInstance
选择目标项目级别角色,单击操作列的成员管理。选择需授权的阿里云主账号或RAM用户,单击确定完成授权。若首次授权时未能搜索到对应账号,可下方手动添加成员区域添加。
源端MaxCompute项目需要的权限如下表:
对象
权限
Table
Describe
Project
List、CreateInstance
为源端主账号添加读information_schema的权限。
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择 。
在租户管理页面,单击角色管理页签。
在角色管理页签,单击新增角色,在弹出的新增角色对话框,填写自定义角色名称和policy内容,然后单击确定完成创建。
policy内容配置如下:
{ "Statement":[ { "Action":[ "odps:Describe", "odps:Select" ], "Effect":"Allow", "Resource":[ "acs:odps:*:catalogs/system_catalog/schemas/information_schema/tables/*" ] }, { "Action":[ "odps:List" ], "Effect":"Allow", "Resource":[ "acs:odps:*:catalogs/system_catalog/schemas/information_schema" ] } ], "Version":"1" }在租户管理页面,单击用户管理页签。
在用户管理页签,单击新增成员,在弹出的添加成员对话框,勾选或手动添加需要设置角色的账号。在批量设置角色区域选择要为这些账号配置的角色,单击
,然后确定,完成配置。
数据迁移权限
迁移任务为SQL模式
源端项目需给目标服务关联角色(AliyunServiceRoleForMaxComputeMMS)授权源项目的数据读取权限,包括Select、Describe权限。
适用范围
同地域迁移。
跨地域迁移。地域包括华东2(上海)、华东1(杭州)、华北2(北京)、华南1(深圳)、西南1(成都)、华北6(乌兰察布)。
授权方式
授权方式一:跨主账号授权方式。通过使用本地客户端(odpscmd)连接至MaxCompute。
源主账号或有权限的子账号操作。
USE 源项目; ADD USER `ALIYUN$目标项目主账号`; GRANT super_administrator TO USER `ALIYUN$目标项目主账号`;目标主账号操作,可以直接授权admin,也可以授权自定义权限角色(包括需要迁移的表的select、describe权限)。
USE 源项目; ADD USER `RAM$目标项目主账号:role/AliyunServiceRoleForMaxComputeMMS`; GRANT admin TO USER `RAM$目标项目主账号:role/AliyunServiceRoleForMaxComputeMMS`;
授权方式二:基于Package跨项目访问资源方式。将源项目需要迁移的表通过Package授权给目标的服务关联角色(AliyunServiceRoleForMaxComputeMMS)。
迁移任务为Spark+开放存储模式
给源项目的服务关联角色(AliyunServiceRoleForMaxComputeMMS)授予Table的Describe、Select、Download权限,适用于除上述SQL模式支持地域外的其他地域之间的跨地域数据迁移。
授权方式参考准备工作-「步骤四:权限配置」中配置用户MaxCompute数据操作权限。建议直接赋予admin角色(若数据源元数据同步权限准备中已经授权admin,则无需再次授权)。
源端读取数据Storage API(若不使用,可忽略该步骤)
使用预付费Storage API
在源端项目所在地域购买数据传输服务Quota。
单击链接进入MaxCompute控制台购买页,新购Quota。
商品类型选择包年包月;规格类型选择数据传输服务。
打开源端项目的Storage API开关,命令如下:
setproject odps.tunnel.enable.quota.route.v2=true;新增角色,为源端主账号添加Quota使用权限。
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择 。
在租户管理页面,单击角色管理页签。
在角色管理页签,单击新增角色,在弹出的新增角色对话框,填写自定义角色名称和policy内容,然后单击确定完成创建。
policy内容配置如下:
{ "Statement": [{ "Action": [ "odps:List", "odps:Usage"], "Effect": "Allow", "Resource": ["acs:odps:*:regions/*/quotas/*"]}], "Version": "1" }在租户管理页面,单击用户管理页签。
在用户管理页签,单击新增成员,在弹出的添加成员对话框,勾选或手动添加需要设置角色的账号。在批量设置角色区域选择要为这些账号配置的角色,单击
,然后确定,完成配置。
使用后付费Storage API
打开源端项目的Storage API开关
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择 。
在租户管理页面,单击租户属性页签。
在租户属性页签,打开开放存储(Storage API)开关。
新增角色,为源端主账号添加Quota使用权限。
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择 。
在租户管理页面,单击角色管理页签。
在角色管理页签,单击新增角色,在弹出的新增角色对话框,填写自定义角色名称和policy内容,然后单击确定完成创建。
policy内容配置如下:
{ "Statement": [{ "Action": [ "odps:List", "odps:Usage"], "Effect": "Allow", "Resource": ["acs:odps:*:regions/*/quotas/pay-as-you-go"]}], "Version": "1" }在租户管理页面,单击用户管理页签。
在用户管理页签,单击新增成员,在弹出的添加成员对话框,勾选或手动添加需要设置角色的账号。在批量设置角色区域选择要为这些账号配置的角色,单击
,然后确定,完成配置。
通过VPC对等连接或使用CEN方案完成VPC网络互联将当前地域的IP加入路由,详情参见下方网络配置步骤。
网络配置
迁移任务为SQL模式
同地域迁移,只需要有NetworkLink即可。
跨地域迁移,则需要Network Link的VPC能访问公网。详情请参见网络开通流程。
迁移任务为Spark+开放存储模式
需要打通源端和目标端的VPC。详情请参见VPC对等连接或使用CEN方案完成VPC网络互联。
步骤二:新增数据源
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择。
在数据源页签,单击新增数据源。
在弹出的MaxCompute服务关联角色对话框中,单击确认,即可创建成功。若未自动弹出该对话框,则表明该角色已创建。
在新增数据源页面,配置数据源信息,然后单击新增,完成数据源创建。
数据源基本信息
参数名
是否必填
说明
数据源名称
是
数据源名称,可自定义,不能包含字符、数字、汉字之外的特殊字符。
数据源类型
是
选择MaxCompute。
网络连接
是
选择需要使用的网络连接。
网络连接在MaxCompute 模块创建,用于MMS与VPC通信,最终连接数据源。
MaxCompute区域
是
选择数据源所在的区域。
阿里云主账号id
是
源项目阿里云主账号UID。
MaxCompute源项目
是
待迁移的项目名称。
执行Maxcompute源端校验Sql的Project
否
选择目标执行迁移作业的项目。
默认目标MaxCompute项目
是
数据迁移时选择映射的目标项目,不可修改。
目标MaxCompute项目列表
否
若一个数据源的数据需要迁移到多个目标项目,需配置目标MaxCompute项目列表。
MaxCompute执行迁移作业的项目
是
迁移过程中,执行在MaxCompute上发起的Spark、SQL等迁移作业的项目,并使用该项目关联的默认计算Quota。
其他信息
以下参数均非必填,根据需要填写。
参数名
说明
数据传输服务 Quota Name
源端独享数据传输服务资源组名称。
如果在源端使用Storage API,需填写源端数据传输服务Quota Name:
预付费方式为自定义一级Quota名称。
后付费方式Quota Name为:pay-as-you-go。
使用Vpc Endpoint访问源MaxCompute
是否启用VPC网络进行数据迁移。
如果在源端使用Storage API,需开启。
Metastore定时更新
数据源元数据是否定时拉取。取值说明如下:
启用:定时拉取,更新周期支持每天和每小时,支持配置更新开始时间。
每日更新:定时器每天运行一次,运行时刻为选定的24小时内的某一时间(精确到分钟)。
每小时更新:定时器每小时运行一次,运行时刻为选定的60分钟内的某一分钟。
禁用:不定时拉取。
元数据访问并发量
访问MaxCompute MetaStore的并发量,用于提高获取MaxCompute元数据的速度。
Schema白名单
需要迁移的Schema,多个值之间以半角逗号(,)分隔。
Schema黑名单
不需要迁移的Schema,多个值之间以半角逗号(,)分隔。
Table黑名单
不需要迁移的MaxCompute数据表。
单个表的格式为
schema.table或table,多个表之间以半角逗号(,)分隔。Table白名单
需要迁移的MaxCompute数据表。
单个表的格式为
schema.table或table,多个表之间以半角逗号(,)分隔。数据搬迁任务最大并发量
数据迁移并发量,默认为20。
MaxCompute迁移任务sql参数
SQL参数。参考Flag参数列表。
单个任务处理的最多分区数量
默认50。即一次MMA任务迁移的分区数量,通过批量的分区迁移,可以减少提交SQL的次数,节约SQL提交时间。一般不需要修改。
单个任务处理的最大数量(单位G)
默认5G。一般不需要修改。
步骤三:同步元数据
数据源启动后会生成一个作业实例,实现数据源与MMS服务的连接,再将源数据同步至MMS服务,以便配置后续迁移作业。
该作业实例会占用4 CU计算资源。当数据源无任何等待运行或正在运行的迁移作业或元数据同步作业时,系统会关闭数据源,使用时需再次启动。
在数据源页签,单击目标数据源对应的操作列的更新元数据。
在数据源页签,可以查看目标数据源的运行状态。
若数据源的元数据存在变动,且启用了元数据定时更新,系统会按照配置的时间定时更新,无需手动进行元数据同步操作。
外部数据源配置完成后,创建迁移作业。