丰富、连接、待集成—MaxCompute 生态再出发

摘要:2019杭州云栖大会大数据生态专场,由阿里云高级技术专家李睿博带来以 “丰富、连接、待集成— MaxCompute 生态再出发” 为题的演讲。本文围绕 MaxCompute 生态进行讲述,主要包括 “更好的工具和接口”、“连接云上各种数据”、“开放自定义引擎” 三部分。主要内容包括 MaxCompute 获得了 Tableau 官方支持,更好的搬站工具和命令行工具体验,大数据+AI 在 Python 生态部分的工作进展,以及开放自定义引擎的能力。

视频直播回放 >>>
以下为精彩视频内容整理:


MaxCompute 是来自阿里巴巴的一款旗舰级大数据服务,属于全托管式。看待MaxCompute的生态有不同的角度。如上图的右半部分,将MaxCompute看作是服务,则服务外围则是相应的工具和接口,例如Java SDK、JDBC驱动等,是生态。从另一个角度,从MaxCompute的功能来看,分为两部分,一部分是计算属性,另一部分是存储属性。右下角的数据属于存储属性,左上角的引擎属于计算属性。MaxCompute作为一站式的大数据解决方案,既提供了存储能力,也提供了计算能力。从不同的角度看,整个环形构成了MaxCompute生态。

丰富、连接、待集成—MaxCompute 生态再出发

工具接口更丰富

MaxCompute是云原生的大数据服务,服务其实就是一套Rest接口,在外部通过SDK跟服务进行交互。交互分为两部分,一部分是控制,例如,提交作业时使用XML来提交作业以及获取作业的状态,另一部分是数据通道,当作业跑完之后需要在服务端获取下来时,将会大量用到PB。在SDK中大量用到XML到Java object Binding的技术,一直沿用的就是JDK自带的JAXB技术,但是随着Java版本的迭代,Jaxb会退出标准Java,而编程JavaEE的特性,需要用户额外引用包来完成一个项目,这对于使用者来说非常不方便。另一方面,对于PB来说也是如此,跨版本的兼容问题一直存在。如果需要将MaxCompute集成到某个框架中,产生了依赖库的冲突时,用户处理起来是比较难的。现在从最新版的SDK开始,包含了完整的XML Binding的实现,可以完全不依赖JAXB,在面向Java 9/10/11时,都可以无障碍运行。使得Java SDK依赖层变得很薄。JavaSDK作为上层工具的基础,包括命令行工具、JDBC等都有收益。

丰富、连接、待集成—MaxCompute 生态再出发

在JavaSDK之后,MaxCompute团队对JDBC驱动也做了改进。除了新增支持MaxCompute所有新类型之外,阿里也基于最新的JDBC驱动做了MaxCompute的Tableau到数据源的连接器。Tableau是业界中做交互式数据分析非常领先的厂商,对数据连接器的质量有非常高的要求。基于JDBC的MaxCompute Connector是完整的通过了Tableau TDVT测试,大概700个测试用例,被Tableau官方所收录。从2019.4版本开始,Tableau数据源列表中可以找到MaxCompute。

丰富、连接、待集成—MaxCompute 生态再出发

在工具层面,console提供了两处明显的改进,包括多行编辑体验和支持4 Bytes UTF-8。此外,在2019年,阿里新开发了搬站工具,是能完整表达搬站意图的工具链,如上图所示。从搬站数据开始,然后做网路情况的探测,以及数据源的探查,生成搬迁计划,最后执行。这套工具链提供了足够灵活的接口来满足各种搬站中的特殊需求,比如原来命名不够好,可以做更名。在执行层面,无论是推模式和拉模式都支持,还可以和DataWorks的数据同步集成,带给用户很好的体验。这套搬站工具已经应用到了58到家和百合网等客户。

丰富、连接、待集成—MaxCompute 生态再出发

Python生态对于AI来讲是不可或缺的一部分,在提到MaxCompute生态时,不仅仅是指Python SDK,也涉及DataFrame兼容。可以用类似DataFrame的API执行在MaxCompute上,能满足很多的场景,但不是全部,如上表中,几乎与index相关的操作都不支持。因此,在2018年,阿里开源了一个新的Mars引擎,是基于Tensor分布式引擎,可以更好的实现大数据的科学计算。同时,Mars也非常适合作为大数据平台和其他系统,比如机器学习、图计算系统的桥梁。

丰富、连接、待集成—MaxCompute 生态再出发

如上图所示,展示了使用Mars的例子,其中Mars作为中间层,用到Mars一系列新的特点,左侧为图计算系统,有自己的存储和表达,可以生成高维array,然后,根据自己的index将Tensor写到下一步,最后,数据会进入到TenserFlow进行深度学习的训练,中间的过程还需要经过大数据系统的补充,用来补充维度。

丰富、连接、待集成—MaxCompute 生态再出发

上图为Mars+DCPM在某种负载条件下的工作,输入数据分别为250G和500G,负载规模为矩阵乘运算,问题规模是平方级的。当矩阵变大一倍时,计算规模会相应的变大四倍。在使用DCPM后,当问题规模扩大时,性能也会有所提升。例如,在500G的场景下,可以做到25%的性能提升。

云上数据可连接

丰富、连接、待集成—MaxCompute 生态再出发

在阿里巴巴内部,99%的结构化数据都存储在MaxCompute上,且能够支撑EB级别的存储。对于公共云上具体的用户来讲,不可能全部都是结构化的数据,也有非结构化的场景,比如图中的OSS和OTS。很久以前,MaxCompute就可以支持外表,但外表在很长一段时间里只支持OSS和OTS,这与网络的基础架构是相关的。MaxCompute、OSS、OTS都是云原生的基础服务,在网络上随时随地都可以被访问和打通。一直以来,缺少的是VPC里的服务,如上图中的右部分,因为这些服务不是云原生,不具备在官网上开放的能力。但是随着更多的用户对这方面的需求的增加,MaxCompute已经开始支持以外表、Spark/Flink、SQL UDF的形式访问VPC里的数据。

丰富、连接、待集成—MaxCompute 生态再出发

上图为Spark访问RDS的一个例子。在Spark on MaxCompute中访问线下VPC里的ADS需要两步,第一步,在RDS中添加一套白名单,左侧为MaxCompute可能会访问出来的IP白名单,第二步,在启动Spark作业之前,将VPC里必要的信息填充进去。如右侧所示。
这样的VPC打通开启了更多应用场景,包括可以直读Kafka实时数据流,可以联合计算RDS维度表,或者使用Redis加速引擎执行等。当VPC打通的网络和带宽足够稳定时,阿里有可能会实现云上和云下混合的架构。

丰富、连接、待集成—MaxCompute 生态再出发

开放引擎待集成

丰富、连接、待集成—MaxCompute 生态再出发

上图为MaxCompute的联合计算平台。将MaxCompute的计算能力包装成各种开源引擎都可以适配,好处是可以统一的管理,利用统一的资源池,直接可以在MaxCompute上运行各种开源引擎编写的作业。

丰富、连接、待集成—MaxCompute 生态再出发

在2019年4月,阿里正式将Spark推向了公共云,试点国内几个region,收到了很高的欢迎度。现在MaxCompute已经实现全域可用,标配开箱即用。MaxCompute最初是一个离线的数据系统,擅长运行大规模作业,现在使用联合计算平台作业的形式,将Spark和Flink引入进来,开始支持流计算属性。

丰富、连接、待集成—MaxCompute 生态再出发

最初,MaxCompute Spark为了能够在MaxCompute上运行,是在原生Spark上做了一些改动的。我们也看到有一些用户提到,对于他们也有过改动的Spark,是否能够兼容。因此我们希望做到对开源引擎核心代码的无入侵,这意味着,用户在开源引擎上做的修改也可以不经过改动可以运行在阿里的平台上。如上图所示,在Spark上做切分,其中,一部分为Engine Core,一部分是引擎与MaxCompute数据源对接的部分,一部分是与资源对接的部分。数据方面,抽象了Cupid SDK方便用户开发与阿里平台对接的部分。资源方面则提供YarnClient的原地替换,对接阿里基于飞天的分布式系统的调度接口。目前可以实现的是,Spark 2.4/Flink 1.9的原生Jar包可以无改动直接使用。
因此,MaxCompute完全可以向用户开放自定义引擎,用户通过下载原生或自己定制的引擎包,创建自定义引擎,然后向这个自定义引擎提交作业。

更多MaxCompute产品与技术信息请访问官网 >>>

欢迎加入“MaxCompute开发者社区”,扫码或点击链接均可加入 https://h5.dingtalk.com/invite-page/index.html?bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745
丰富、连接、待集成—MaxCompute 生态再出发

上一篇:mysql存储过程


下一篇:jdbc_分页查询,大数据,批处理,存储过程