MaxCompute数据迁移服务MMS(MaxCompute Migration Service)支持将多种数据源的数据迁移至MaxCompute。MMS通过与MaxCompute Spark引擎集成,简化了从自建数据源到MaxCompute的大规模数据迁移过程,降低了配置复杂度和运维成本。
功能概述
迁移架构
MaxCompute数据迁移服务MMS支持元数据和数据迁移。
- 元数据迁移:通过元数据API(如Hive Metastore SDK、DataBricks SDK)从数据源获取元数据,生成MaxCompute DDL语句并在MaxCompute中执行以完成元数据迁移。 
- 数据迁移:元数据结构同步后,MMS根据迁移作业的配置,生成并提交一个或多个Spark作业在MaxCompute上运行。这些Spark作业从数据源拉取数据,并写入MaxCompute的目标表中。该过程由MMS服务托管,无需进行Spark作业的开发和运维。 
迁移流程
下图展示了MaxCompute数据迁移服务(MMS)的内部工作原理,整个流程可以概括为以下几个核心步骤:
- 元数据加载:用户创建迁移作业后,MMS首先连接到外部数据源,读取并加载其元数据(如表结构、分区信息等),并将其存储在MMS自身的数据库中以供后续使用。 
- 创建迁移作业:MMS支持单库整库迁移、部分迁移(多表)、部分迁移(多分区)三种迁移作业类型。每个迁移作业会拆分多个子任务并发执行数据迁移。 
- 数据与元数据传输:每个并行的子任务独立地从数据源拉取实际数据,先在目标项目创建对应的目标表/分区,再写入数据。 
- 数据校验(可选):数据写入完成后,MMS支持执行数据校验步骤。比对源端和目标端的表/分区数据条数,初步验证数据的完整性。 
术语简介
- 数据源 - 待迁移的对象,例如:Hive的一个或多个Database。不同的数据源有不同的数据层级,目前MMS会将不同数据源的数据层级映射为Database、Schema和Table三层,其中Schema作为Table的属性存在。数据源层级详情,如下表所示。 - 数据源 - 数据层级 - Hive - Database.Table- MaxCompute - Project.Schema.Table或- Project.Table
- 不同的数据源使用的取数API如下表: - 数据源类型 - 取数API - MaxCompute - 开放存储(Storage API) 
- SQL 
 - BigQuery - Storage Read API - Hive - HDFS或S3 - Databricks - Azure Bob Storage 
- Databricks JDBC 
 
 
- 迁移作业 - MMS迁移的对象可以是一个Database、多个Table或多个Partition,迁移作业可用于定义迁移对象。 
- 迁移任务 - 选定迁移对象并提交迁移作业后,MMS会根据迁移作业的配置,将一个迁移作业拆分为多个独立的迁移任务,迁移任务是实际的执行单位,作业类型包括Spark和SQL作业。每个任务可对应一个非分区表或一个分区表的多个分区,任务执行过程包含元数据迁移、数据迁移和数据校验。 
- 数据校验 - 数据迁移完成后,MMS执行校验以保证数据一致性。校验方法是在源端和目标端分别执行 - SELECT COUNT(*)来对比表或分区的行数,用于验证数据完整性。校验结果记录在任务日志中。
迁移步骤
常见问题
使用MMS进行数据迁移会产生哪些费用?
MaxCompute迁移服务(MMS)本身不收费。数据迁移过程中会产生以下费用:
- 目标端计算资源费用:MMS通过在MaxCompute项目内提交Spark或SQL作业来执行数据迁移。这些作业会消耗MaxCompute的计算资源(CU),并按照MaxCompute的计费标准(按量付费或包年包月)计费。 
- 网络传输费用:数据迁移过程中,需要网络打通,会产生相应的网络费用。 
- 源端数据读取费用:MMS数据迁移过程中,通过调用各类数据源的取数接口读取数据,会根据各类数据源规则在源端产生相应的取数费用。 
MMS、DataWorks数据集成在数据迁移场景中应如何选择?
- MMS:MMS适用于整站或大批量数据非持续性搬迁。 
- DataWorks数据集成:适用于定时是持续性数据同步集成,同时支持丰富的数据源。