MaxCompute2.0 对开源系统的支持与融合

要:在2017杭州云栖大会阿里云大数据计算服务(MaxCompute)专场上,阿里巴巴高级技术专家李睿博为大家分享了阿里云大数据计算服务MaxCompute对于开源系统的支持和融合,以及在拥抱开源和生态的时候阿里巴巴的技术团队遇到过哪些问题和挑战。

 

本文内容根据嘉宾演讲视频以及PPT整理而成。


 

在2016年杭州云栖大会上,大数据计算服务团队已经分享过MaxCompute在开源方面的支持和融合了,那次分享的主题叫做“MaxCompute的生态开放之路”。其实在阿里巴巴自己的历史上的早些时候存在过Hadoop和自研的大数据平台长期共存的时期,所以关于MaxCompute和开源生态之间的争论有很多。但是就计算服务团队而言,对于开源秉持的是非常开放的态度。去年讲支持开源,今年的目标则是将MaxCompute打造成为阿里巴巴自研的一站式的数据解决方案,为了实现这个目标,今年更换了一个词叫做融合,从支持到融合的转变,阿里巴巴还是做了很多事情的。

 

如下图所示,从技术栈的角度来看,这也是这几年从用户接口层面成立开源系统一步一步做下来的大概这样的几个层次。最早是对于开源的或者事实标准的工具层面进行接入,希望用户可以更加方便地接入MaxCompute的系统,然后在编程接口层面做了兼容,这样主要是为了保护用户的投资,包括帮助集团内部“登月”的过程更加平滑,今年的最新工作则是对于开源引擎做了更多的融合工作。

 

在开源协议层面主要的关注点是JDBC、Hive的协议,这里无外乎是让已有的支持JDBC的工具可以直接接入到MaxCompute系统上来。如下图右侧所示,可以通过像JDBC驱动、Zeppelin、Workbench、Pentaho、TalenD这样的数据分析工具是可以直接对接到MaxCompute上面来做数据分析的。当然JDBC也提供了一个标准的JDBC编程接口,这样对于用户而言,编程成本更小,可以直接把之前在数据库上使用的一些代码拿过来使用。在Hive Thrift这一层,提供了Hive Thrift协议的兼容接口,在这一层之上基本上所有的Hive生态链都可以支持,包括Hive的ODBC驱动、Hive的命令行工具等。除此之外还有ETL工具支持,这一部分主要负责对于多种数据源数据的导入导出。

除了协议和工具的支持,MaxCompute还打通了用户接入系统的第一层门槛,也就是用户可以避开阿里巴巴自研的工具链直接对接到MaxCompute系统上。

 

而接下来需要面对的问题就是工具可以对接上来,但是在工具中所写的SQL在一两年之前还需要写MaxCompute所定义的SQL,而这个SQL与Hive SQL、标准的SQL以及Oracle的SQL还是会有些区别的,这就会导致之前的代码难以迁移。MaxCompute的SQL团队去年的时候也花费了很大的精力跟随MaxCompute 2.0推出了一系列特性来对于Hive做了全面的兼容,保护了用户的代码投资,可以让用户更加平滑地迁移到MaxCompute上来,包括现在可以完整兼容Hive的类型系统、完整兼容Hive的內建UDF甚至包括用户自己为Hive开发的UDF也可以直接搬到MaxCompute的SQL里面运行,并且目前也已经支持了外表,也就是数据可以不只是在MaxCompute里面,其可以在外部的OSS等的任何地方。MaxCompute SQL在语法层面也做了相当多的细节改进,使得其可以兼容Hive的语法。

 

可能80%以上的用户都是通过SQL的接口来使用MaxCompute系统的,但是也有很多传统的数据分析师是通过R语言进行数据分析,所以很多MaxCompute也做了RODPS,这是R上的插件,当将这个插件装到R上之后就直接打通了从R到MaxCompute的桥梁,可以直接将R的table直接转化为DataFrame。后续可以在使用R自己生态上面使用R原生的DataFrame进行分析和各种各样的报表展示,这样就不需要用户将数据导出来再导入到R里面去的繁琐过程。

 

既然提到了R,也要提到Python。因为目前Python社区在通用编程以及大数据分析方面的上涨势头也非常好。像在Python社区中的Pandas DataFrame这套API也是数据分析师非常喜欢的编程接口。MaxCompute在Python SDK的基础之上提供了一套高度兼容Pandas DataFrame的自研DataFrame,这套自研DataFrame的不同点在于其实际执行是在MaxCompute里面,而刚才提到的R则是将数据导入到R里面进行单机的分析。在这边可以做到对于一个MaxCompute表建成一个DataFrame,然后再用像一个DataFrame做GroupBy或者Filter等计算,这一切都发生在MaxCompute的服务端,这样就可以直接给社区的已有代码赋予大数据计算的能力,也希望通过这样的形式把MaxCompute的计算能力赋予给社区。同时也注意到Python社区中Jupyter Notebook这些工具链非常好用,所以也将DataFrame做了很多的可视化集成工作,可以在Notebook上面实现一些展示效果非常好的信息。

 

当完成了以上这些工作之后,在协议、工具以及编程接口方面已经有了比较大的进步或者说比较好的支持,但是还是不得不面临非常多的用户的问题,比如MaxCompute对于Spark API的支持等问题。因为开源的计算引擎非常多,每种计算引擎都是针对各自的细分场景的。其好处是用户最开始在使用的时候可以快速搭建,能够很快地上手,学习资料也比较多,但是总会有一些问题,比如规模或者资源利用效率的问题等,用户就会想这份作业通过现有的系统能不能迁移到MaxCompute上来托管给阿里云的服务,这个时候就会面临这样的选择,这就和集团内的“登月”计划的初衷是一样的。当然“登月”的效果是大家都想要的,因为数据都放在一起之后,数据所产生的威力是非常大的,但是“登月”的过程,大家都想轻松一些。

之前计算服务团队也对于开源的API的兼容做了很多尝试,如果用一套自研的计算引擎来兼容各种各样的API是不太现实的事情,所以后来转换了思路,考虑能否在保持自研优势的基础之上更好地拥抱开源生态。在保持数据存储、资源调度以及安全控制的统一的基础之上,将开源的计算引擎也直接运行在MaxCompute平台之上,这也是服务计算团队今年主要做的事情,也就是联合计算平台,通过将开源的系统运行在MaxCompute平台上使得MaxCompute获得更好的兼容能力。这也就是对于开源的态度从支持走向融合,希望通过MaxCompute提供一站式的大数据解决方案。

接下来分享一下联合计算平台,刚才提到了三个统一,对于这三个统一而言,真的要将其实现就会变成这四个挑战。

因为开源的系统通常会有比如一套Spark集群、一套Flink集群等,这些往往都是独立的集群,需要做资源调度的整合。通常开源系统中的用户权限控制相对比较弱,大家可能会把集群拆分成为多个来做权限的隔离。但是因为MaxCompute是一个统一的SaaS服务,那么在用户的鉴权、权限控制方面以及运行时的隔离方面有很多的工作需要做。最后当数据都放在一起之后,其实也需要有让Spark API以及其他的API能够访问已经在MaxCompute里面数据的能力,那么就是所提到的数据集成的这些内容。面临这些挑战,接下来会用一个例子来讲联合计算平台是怎样实现的。

 

下图是标准的SparkOnYarn的标准的作业的简单架构示意图,当然在这里为了简化并没有将所有的角色画出来。这里可以看到通过一个客户端可以提交一个Spark作业,这个Spark作业会有自己的一个Master,Master会向Resource Manager申请资源,然后Resource Manager通知Node Manager将Spark的Container启动起来。对于Spark作业而言就变成了一个Spark+若干Container这样的一个结构。在作业外面还有一个Browser可以直接访问到App Master的WebUI上面,或者在运行完成之后会下沉到HistoryServer上面,可以来看作业的运行状态。这是一个标准的Spark的运行方式。

联合计算平台所做的事情是这样的,把像是Spark或者其他的开源计算引擎包装成MaxCompute内部的一个Task,在这里叫做CupidTask。然后通过MaxCompute统一的restfulAPI提交CupidTask,这里用户的认证以及鉴权都是在统一的接入层进行的,也就是说在这里就杜绝了用户访问到没有权限访问的Spark资源,这样的SparkTask会给每个角色外面都包装一个管理者角色,叫做CupidMaster和CupidWorker。在资源调度这层其实是由CupidMaster来代理的,这样就可以统一地走飞天的资源调度,然后由CupidMaster代理了APPMaster对于资源的管理。

因为开源的代码写起来比较灵活,而作为运行在一起的Service也需要保护用户的数据安全,所以开源代码需要严格地放在隔离的环境中,而不会看到和自己的数据无关的地方,而自己的数据是通过CupidWorker来实现的,所以开源代码所能够看到的数据一定是通过授权和认证体系同意之后才能访问的数据并且通过CupidWorker同步给下面的容器。通过这样的方式将标准的Spark作业变成了一种MaxCompute作业,这样就实现了某种程度的混跑,所以数据是同一份,既可以使用MaxCompute自己的SQL来处理这份数据,也可以使用Spark数据来处理这份数据。

 

下图所示的是运行的展示效果,其实与原生社区的版本在运行起来基本上看不出有什么区别。

MaxCompute与开源的融合,在协议和工具层面做的一些支持都是之前在MaxCompute RestfulAPI服务之上通过SDK来实现的。而在MaxCompute里面的组件也是对于开源进行了支持,包括自己的SQL对于Hive做了非常多的兼容工作,另外通过联机计算平台的形式将开源的系统迁移到MaxCompute平台里面。目前专有云的版本已经有了支持Spark等的版本,借助于联合计算平台,Spark等可以天然地在外围作为开源API进行支持,整个的这套资源都是架构在飞天体系之上,希望通过融合的架构提供给用户以更加灵活的选择。用户可以将已有的数据和应用搬迁上来,用原来的Spark或者机器学习作业继续在上面运行。如果遇到问题,也可以同一份数据既落到MaxCompute里面也可以直接对于这份数据使用PAI引擎进行计算,这样就可以产生更大的价值。

未来,我们也希望将联合计算平台的能力逐步地开放出来,可以方便地将开源社区的成果直接应用到MaxCompute体系中。

MaxCompute招聘信息:DT时代,与坚持梦想者同行!

阿里巴巴大数据-玩家社区 /

---阿里大数据博文,问答,社群,实践,有朋自远方来,不亦说乎……

时间: 2024-11-02 09:32:17

MaxCompute2.0 对开源系统的支持与融合的相关文章

微软郑子颖:Windows Azure如何支持开源系统和软件?

在6月6日下午进行的云计算大会微软专场上,微软Windows Azure部门资深测试经理郑子颖针对Windows Azure对开源操作系统的支持进行了讲解.此外,Canonical工程师唐亚光现场演示了在Windows Azure上创建并运行一个Ubuntu虚拟机. 微软Windows Azure部门资深测试经理 郑子颖 Windows Azure对开源的支持主要体现在两个方面:第一,在Windows Azure上可以部署和运行虚拟机,支持开源操作系统,也支持在Windows和开源操作系统上运行

如何利用PHP开源系统建立PHP网站

最近随着我的PHP网站开发博客PR值的提高,网站流量中搜索引擎这部分量开始增长,从而知道不少朋友都想知道如何利用PHP建立自己的网站. 我们知道即便作为有一定程序设计基础的程序员,要想独立建立一个性能优越,结构合理,用户体验良好的WEB网站都不是一件简单的事情,其涵盖的知识面.工作量都不是一个人可以完成的. 而PHP作为开源语言,发展至今已有很多成熟的国内外开源系统,足以满足个人和企业用户自己建立WEB站点,从而将更多的精力投入到网站内容建设和网站推广工作中.当然如果你懂得一点PHP,那就更好,

轻松入门Android直播相关技术 从0搭建直播系统

本文讲的是轻松入门Android直播相关技术 从0搭建直播系统,我立马实践了下,所以首先给大家分享下整个搭建的流程: 本人的操作系统为mac,其他系统的同学可以根据提示,自行安装软件. 一个简易的直播系统,大致可以由三部分组成: 搭建一个rtmp媒体服务器 推流端 拉流端 现在目标是快速搭建起来,所以当然是借助开源项目和一些软件: rtmp媒体服务器:这里使用srs 推流端:这里使用obs 拉流端:这里使用播放器vlc rtmp媒体服务器的搭建 这里使用srs,srs的链接为: https://

MaxCompute2.0性能评测:更强大、更高效之上的更快速

MaxCompute2.0(原Odps):通过性能评测,MaxCompute2.0离线计算比同类产品Hive2.0 on Tez性能优势快约90%以上:MaxCompute2.0从新一代执行引擎到编译引擎.基于代价的优化器全流程针对性能提升做出了卓越改进.        本次评测侧重于已发布的MaxCompute2.0与离线处理同类竞品及线上稳定版本的性能对比,通过测试我们看到MaxCompute2.0在功能上更强大.使用和发布更新更高效.开放生态的同时针对线上作业占比80%以上的Sql以及其中

数据智能需求旺盛 阿里云MaxCompute2.0华南区开服

本文讲的是数据智能需求旺盛 阿里云MaxCompute2.0华南区开服 [IT168 资讯]8月31日,阿里云宣布将在深圳区域正式部署大数据计算服务MaxCompute,以进一步提升对华南区域客户服务的响应速度,并推动该地域人工智能产业的发展. 此前,凭借大规模计算存储.多种计算模型.强数据安全和低成本的优势,MaxCompute一直供不应求. 官方预计,深圳区域将于9月7日正式开放售卖,此后阿里云MaxCompute还将在年底前陆续新开北京.杭州.香港.新加坡.美国.日本.欧洲等节点.这显示了

iOS学习之Objective-C 2.0 运行时系统编程

0 导言 本主主要内容包括: 1.概述 2.参考 3.运行时系统的版本和平台 4.和运行时系统的交互 5.消息 6.动态方法解析 7.消息转发 8.类型编码 9.属性声明 1 概述 Objective-C语言将决定尽可能的从编译和链接时推迟到运行时.只要有可能,Objective-C总是使用动态的方式来解决问题.这意味着Objective-C语言不仅需要一个编译器,同时也需要一个运行时系统来执行编译好的代码.这里的运行时系统扮演的角色类似于 Objective-C语言的操作系统,Objectiv

与Android同为开源系统的Ubuntu会成功吗?

今天凌晨, Ubuntu开发商Canonical发布了代号为Edge的智能手机,与其说是发布,倒不如说是这个项目的成立,因为该项目正式启动需要募集至少3200万美元(30天内). Ubuntu首款手机Edge外形设计方正有型,机身尺寸为64×9×124mm,配备了4.5寸蓝宝石材质屏幕,分辨率为1280×720像素,搭载多核心处理器,内存组合看起来很猛,即4GB RAM+128GB存储空间.      此外,该机还 具备800万像素摄像头(前置200万像素),运行双系统即Ubuntu mobil

大数据相关开源系统简介汇总

本片博客介绍大数据相关的开源系统以及他们对应的一句话简介, 对于各位想大概了解大数据都有哪些开源系统的同学有帮助.各种相关开源系统简介:   如下是Apache基金支持的开源软件 hdfs   跟GFS类似, 一个分布式文件系统.   mapreduce   跟Google的MapReduce类似, 一个典型的简单的分布式计算框架.   yarn   资源管理系统, 跟Mesos类比.   Avro   跟PB类似, 用于将数据结构序列化成字节码, 在不同的语言之间切换.   官方举例是将C转换

为何智能路由器们要用开源系统?

小米日前正式推出了小米路由器,在业界又一次引发了关于"抢占客厅"讨论.这两款小米路由使用的miWiFi系统,不出所料是基于开源OpenWRT(OpenWRT也基于Linux开发)系统的定制版本.360安全路由360SOS,是与硬件厂商共同基于开源Linux系统的定制版本. 曾经以小米营销模式为榜样引起高调关注的极路由,其使用的HiWiFi系统,也基于OpenWRT进行了定制.而果壳路由和小度路由的系统,则基于厂商提供的Linux版SDK(软件开发工具包)进行开发. 上游厂商为路由器厂家