开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

云原生大数据计算服务 MaxCompute 中,MaxCompute Migration Assis

已解决

云原生大数据计算服务 MaxCompute 中,MaxCompute Migration Assist (MMA)是什么?

展开
收起
詹姆斯邦德00 2022-10-17 11:01:17 847 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    MMA目前主要面向Hadoop数据迁移的场景,支持Hive到MaxCompute迁移。MMA实现了Hive的 UDTF,通过Hive的分布式能力,实现Hive数据向MaxCompute的高并发传输。通过连接用户的Hive Metastore服务,抓取Hive Metadata,并利用这些数据生成用于创建MaxCompute表和分区的DDL语句以及用于迁移数据的HiveUDTF SQL。

    以下是整个迁移链路的简要示意图,供参考:

    image.png

    当用户通过 MMA client 向 MMA server 提交一个迁移 Job 后,MMA 首先会将该 Job 的配置记录在元数据中,并初始化其状态为 PENDING。

    随后,MMA 调度器将会把这个 Job 状态置为 RUNNING,向 Hive 请求这张表的元数据,并开始调度执行。这个 Job 在 MMA 中会被拆分为若干 个 Task,每一个Task 负责表中的一部分数据的传输,每个 Task 又会拆分为若干个 Action 进行具体传输和验证。在逻辑结构上,每一个 Job 将会包含若干个 Task 组成的 DAG,而每一个 Task 又会包含若干个 Action 组成的 DAG。整体的流程大致如下:

    image.png

    上图中数据传输的原理是利用Hive的分布式计算能力,实现了一个Hive UDTF,在Hive UDTF中实现了上传数据至MaxCompute的逻辑,并将一个数据迁移任务转化为一个或多个形如:

    SELECT UDTF(*) FROM hive_db.hive_table;

    的Hive SQL。在执行上述Hive SQL时,数据将被Hive读出并传入UDTF,UDTF会通过MaxCompute的 Tunnel SDK将数据写入MaxCompute。

    当某一个Task的所有Action执行成功后,MMA会将这个Task负责的部分数据的迁移状态置为 SUCCEEDED。当该Job对应的所有Task都成功后,这张表的迁移结束。

    当某一个Task的某一个Action执行失败,MMA会将这个Task负责的部分数据的迁移状态置为 FAILED,并生成另一个Task负责这部分数据,直到成功或达到重试次数上限。

    当表中数据发生变化时(新增数据,新增分区,或已有分区数据变化),可以重新提交迁移任务,此时MMA会重新扫描Hive中元数据,发现数据变化,并迁移发生变化的表或分区。

    以上内容摘自《企业级云原生白皮书项目实战》电子书,点击https://developer.aliyun.com/ebook/download/7774可下载完整版

    2022-10-17 18:58:49
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载