摘要:2019年1月18日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学,本次技术沙龙上,阿里巴巴高级技术专家吴永明为你们分享了MaxCompute,基于Serverless的高可用大数据服务,以及MaxCompute低计算成本背后的秘密。算法
如下内容根据演讲视频以及PPT整理而成。
1、什么是MaxCompute安全
Big Data in Alibaba
首先为你们介绍阿里巴巴大数据技术的一些相关背景。正以下图所示,阿里巴巴其实在很早的时候就开始布局大数据技术,甚至能够说阿里云的成立就是为了帮助阿里巴巴解决大数据相关的技术问题。现在,阿里巴巴几乎全部的BU都在使用大数据技术。而在阿里巴巴内部,大数据技术不只应用范围很是广,同时也很是深刻。此外,整个集团的大数据体系最终都会聚集到一块儿。
Overview of Computing Platform
阿里云计算平台事业部的职责就是将阿里巴巴的大数据体系聚集到一块儿,而且负责整个集团的存储、计算相关的研发工做。以下图所示的就是阿里巴巴大数据平台的简单架构图,最底层的是统一存储平台盘古,其负责存储大数据。存储时静态的,而为了挖掘数据的价值就须要依靠计算能力实现,所以阿里巴巴大数据平台也提供了各类计算资源,好比CPU、GPU、FPGA以及ASIC等。为了更好地利用上述这些计算资源,须要将他们统一地进行抽象,并有效地进行管理,而在阿里云内部,统一的资源管理系统称为伏羲。基于资源管理和调度系统,阿里云还开发了各类各样的计算引擎,好比通用计算引擎MaxCompute、流计算Blink、机器学习PAI以及图计算平台Flash等。在这些计算引擎之上,平台还提供了各类各样的开发环境,并基于这些开发环境实现了各类业务。
本文中将为你们重点介绍通用计算引擎MaxCompute。MaxCompute是一个通用分布式大数据处理平台,其一方面能够存储海量数据,另外一方面还能够基于数据进行通用计算。
首先看两个数字,目前,阿里巴巴内部99%的数据存储和95%的计算任务都由MaxCompute承载。其实,MaxCompute就是阿里巴巴的数据中台,集团的各个BU所产生的数据最终都会汇总到MaxCompute上面,使得集团的数据资产得以不断增长。其次,再看几个指标。MaxCompute在BigBench测试中的表现是通常开源系统的2.5倍。在阿里巴巴集团内部,MaxCompute集群的机器数量达到了几万台,天天所承载的做业量更是达到了百万级别。目前,MaxCompute集群所存储的数据量也很是大在好久以前就已经达到了EB级别,这在全球范围内都处于领先水平。此外,MaxCompute不只对集团内部提供服务,也开放给了外部企业使用,目前所提供的行业解决方案已经达到了50多套。现在,MaxCompute的存储量和计算量每一年都在以极高的速度增加,而借助阿里云的能力,使得MaxCompute不只可以在国内进行部署,还可以部署到海外的不少国家和地区。
MaxCompute系统架构
MaxCompute的系统架构与业界的大数据计算引擎架构比较相似。以下图所示,用户可以经过一些客户端进行接入,经过接入层就能够将数据传输到MaxCompute里面。而在中间存在一个管理层,能够管理各类各样的用户做业,同时也会承载各类各样的功能,好比大数据里面最基本的SQL编译、优化和运行等功能。此外,MaxCompute提供了分布式元数据服务,由于若是没有元数据管理,那么就没法知道数据存储的到底是什么。在MaxCompute架构的最下面一层就是实际的存储和计算发生的地方。
2、MaxCompute Serverless与背后的奥秘
现在Serverless这一律念很是火爆,而当站在MaxCompute开发者的角度,Serverless的火爆既使人高兴,也使人郁闷。值得高兴的是:MaxCompute技术团队早在Serverless概念提出以前的不少年就开始研发相似功能了,而且设计理念也彻底符合Serverless,这能够说明MaxCompute在Serverless方面的布局较早,而且技术具备必定的先进性。但使人郁闷的是:虽然MaxCompute团队很早就被提出了Serverless的相关概念,也承认这种技术路线的价值,可是却没有可以及早地将这样的能力包装起来。
在Serverless概念提出以前,你们进行大数据实践的时候基本都是按照下图的步骤,首先购买服务器,搭建集群,有了硬件以后就能够在上面安装大数据处理软件“全家桶”,以后导入数据,编写业务所须要的查询并作计算,最终获取结果。固然了,上述的每一个步骤都离不开运维相关工做。若是自行搭建大数据系统,那么运维工做将会贯穿始终的,而对于运维同窗而言,也须要时时刻刻待命,以防系统出现问题。
可是,若是回顾上述的步骤,真正可以产生业务价值就是第四步的编写查询和进行实际的计算,可是其余的步骤会消耗不少的资源和人力,而这对于偏向于业务型的公司而言,都是额外的负担。而现在,Serverless就提供了帮助企业消除这些额外负担的机会。性能优化
以MaxCompute Serverless为例,只须要通过四个步骤就能够实现所需的业务价值。第一步开通帐户并建立项目,这个项目既是数据存储载体,也是计算的载体;第二步上传数据;第三步编写查询语句并进行计算;第四步就能够获取计算结果。在整个过程当中,无需任何运维工做,所以开发团队能够将精力集中在最为核心而且可以产生业务价值的地方,这也就是Serverless的优点所在。其实,这也表明了新技术对平常工做所带来的变化,新的技术使得你们可以更加专一于可以产生核心价值的部分,而无需关心额外的或者辅助性的工做。服务器
和其余的开源软件或者大数据公司直接为客户提供一个大数据软件包的作法不一样,MaxCompute所提供的是大数据服务,并且所提供的服务可以实现365(天)X 24(小时)的高可靠,既提供了大数据计算的能力,也同时提供了数据存储的能力,而且使得用户能够真正实现大数据技术的开箱即用。微信
在实现大数据平台Serverless服务的过程当中须要面对不少挑战,在本文中将会主要聚焦如下三个问题:架构
持续改进和发布中的挑战和方案
若是想要实现一套大数据系统,那么持续改进和发布的话题是绝对没法脱离。这是由于用户总会提出各类各样的新需求,而为了知足这些需求就须要不断地升级和改进大数据平台,而在改进的同时,还须要面对天天平台之上运行的百万级做业,并保证7*24小时的服务不间断。那么,如何实现平台升级过程的平稳安全,而且使得用户对于新功能发布无感知,此外还须要保证新版本的稳定性,没有Bug和性能回退问题,以及在出现问题以后可以快速止损等,这些都是须要考虑的问题。此外,在持续改进和发布的过程当中,还须要考虑测试和数据安全性之间的矛盾。总而言之,在大数据平台之上实现持续改进和发布,就如同在飞行的飞机上面更换引擎。
负载均衡
面对上述的问题和挑战,阿里云MaxCompute团队作了大量的工做。目前,在大数据领域,MapReduce对于用户不够友好已经成为了业界的共识,类SQL的大数据引擎已经成为了主流。而对于类SQL的处理而言,最关键的就是三个步骤:编译、优化和执行。所以,MaxCompute也抓住了问题的关键,针对编译和优化开发了Playback工具,针对执行则开发了Flighting工具。除了上述比较偏向于测试验证阶段所使用的两种工具以外,在真正上线的时候,MaxCompute还提供了灰度上线等工具。less
Playback工具
Playback诞生的背景就是MaxCompute须要快速地提升编译器和优化器的表达能力和性能优化水平。而在对编译器和优化器进行了重大改动以后,如何保证编译器和优化器没有问题就成为了一个挑战。最为原始的作法就是经过将一些已有的SQL放到编译器和优化器上执行,并经过执行结果的人工分析来发现编译器和优化器的改进中存在的问题。可是经过人工方式进行分析,可能须要一百年才能完成,这显然是没法容忍的。所以,MaxCompute团队但愿借助大数据计算平台的运算能力来自我验证新的编译优化器。
运维
其原理就是利用MaxCompute自己强大且灵活的能力,把全部真实的用户查询收集起来并放到MaxCompute系统里面,将用户查询以大规模、分布式的方式运行起来,并经过新版的编译优化器来完成这些做业的编译和优化。而因为MaxCompute采用了业内通行的模式,所以可以很容易地将做业插件插入到任务之中,进而对编译优化任务进行校验,若是存在问题也可以很容易地暴露出来。
机器学习
总结而言,Playback一方面利用MaxCompute灵活且强大的计算能力来分析海量用户任务,另一方面还借助对于UDF的支持和良好的隔离方案来进行编译优化和验证。这就使得对于新版本编译优化器的验证变得很是容易,对于以前想要实现可是却无能为力的任务,现在借助于大数据平台的强大能力得以实现。
Flighting工具
Flighting是针对于运行时的工具。其实,对于改进的优化器进行测试优化的常规作法就是搭建一个测试集群进行测试,这是最常规而且最天然的作法,可是也会形成极大的资源浪费,由于测试集群的成本很是大。因为测试环境与真实环境的任务复负载状况不一样,所以,测试集群也没法真实地模拟出实际场景。此外,为了在测试环境中进行验证,须要测试人员来创造出一些数据,可是这些被创造出来的数据可能过于简单。不然就须要从真实场景中拿一些数据,可是这样作不只须要通过用户的赞成,还须要进行数据脱敏,这也是一件极其麻烦的事情。不只可能产生数据泄露的风险,并且最终数据和真实数据也会存在必定的差别,不少状况没法验证出新功能所存在的问题。
而MaxCompute的运行时验证工具Flighting所使用的就是线上真实的集群和环境。借助于资源隔离的能力,使得MaxCompute集群中99%的计算资源交给用户来运行做业,而剩下的1%的资源交给Flighting工具进行执行器的新功能验证测试。这样的作法很是高效,不只不须要拖取数据,还能够在生产环境中直接运行,能够容易地暴露出真实执行器所存在的问题。
灰度上线
MaxCompute平台具备灰度上线的能力,能够将任务按照重要性进行分级,进行细粒度发布,而且支持瞬时回滚,这样就能够将风险降到最低。
MaxCompute平台的持续开发验证迭代流程
以下图所示的是MaxCompute平台的持续开发验证迭代流程,其结合了针对编译优化器的Playback工具、针对运行器的Flighting工具以及灰度上线的能力。在这样的流程中, 第二个周期并不须要等待第一个周期完成再开始,这样就使得整个研发流程更加高效。目前,MaxCompute的持续开发和交付过程在编译优化、执行以及灰度等都具备较强的技术优点,在整个行业内也具备较强的技术竞争力,这就使得MaxCompute可以更好地向前演进,为客户带来更多更好的功能,同时也保证了MaxCompute平台在升级的过程当中不会影响用户的正常使用。
自动化、智能化
随着人工智能和大数据技术的不断发展,现在对于服务而言,不只须要实现高可用,还须要实现自动化。针对于这样的思想,能够从两个角度来看,即服务自己的角度和用户运维的角度。针对于服务自己,首先须要实现自动化,更进一步能够实现人工智能化。
任何服务都会出现各类各样的问题,存在各类各样的Bug,在出现问题的时候,传统解决方案中须要依靠人力来解决。而服务自动化和智能化的终极目标就是在系统出现问题的时候,不须要人工来修复,而彻底经过系统的自愈能力来发现并解决问题。而服务自动化和智能化的目标须要一步步实现,从用户运维的角度来看,就是从本来用户自身负责的运维工做,转交给完成大数据任务的云上大数据平台,好比阿里云MaxCompute,这时候就至关于将客户的运维工做转移给了MaxCompute团队。而第三步就是MaxCompute团队也但愿从大数据平台繁琐的运维任务中解脱出来,实现服务的自动化和智能化运维,进一步释放MaxCompute团队的精力,将所有的精力投入到更加有价值的工做上。而实现大数据服务自动化和智能化的目的在于提升服务可靠性,解放生产力,经过作更有价值的事情来回馈用户。基本思想就是定时地收集和监控服务的各项指标,针对异常指标及时做出应对措施。
除了大数据服务的自动化和智能化以外,对于用户查询而言,自动识别出可优化的查询并提供优化建议也很是关键。你们所写的SQL查询未必是最高效的,可能存在一些更加有效的方式或者更好的技术,所以须要自动识别出用户查询中可优化的部分,并给出相应的优化建议。对于这部分而言,也是业内的发展方向,目前MaxCompute团队也正在进行相应的研究工做。
3、MaxCompute低成本的奥秘
低成本使得MaxCompute更加具备竞争力,而在低成本的背后,是MaxCompute发挥出技术红利使得成本确确实实地下降下来。为了使得大数据任务的成本更低,MaxCompute主要在计算、存储和调度这三个方面进行改进和提升。
对于集群内部调度而言,所须要解决的问题很是多。一方面,每时每刻都有不少的做业实例在等待调度,另一方面还有不少资源等着运行做业。
集群内调度
那么如何将二者结合起来就显得很是关键,也很是考验调度能力。目前,MaxCompute大数据平台的调度决策频率达到了4000+/s,这里所做出的调度决策是将必定大小的做业放入到相应的资源中去,尽量作到既能知足做业所需资源,又不能浪费资源。
在性能方面,须要支持增量式调度,使得资源可以获得很好地利用;此外,还提供了弹性配额能力,使得多用户在运行计算任务的时候能够实现削峰填谷。由于在真正使用大数据平台的时候,你们不可能同时提交任务,在绝大多数状况下每每会错峰提交任务,所以就会出现资源使用的峰和谷,而经过弹性配额能力能够尽可能实现削峰填谷,使得资源可以充分利用。对于任务的最优化调度而言,则须要考虑延迟与吞吐之间的平衡。在负载均衡方面,须要规避一些热点。此外,MaxCompute的调度决策系统还支持任务优先级和抢占,可以实现实时性和公平性。
此外,针对于复杂任务调度而言,还进一步划分了服务和做业的调度。这里所谓的任务就是一次性做业,而对于服务而言,在启动以后则会在一段时间以内一直不间断地处理数据做业。其实,服务和做业的调度存在着很大的差别,服务调度要求较高的可靠性,不能被打断,由于一旦被打断,从新恢复起来的成本将会很是高;而做业对于间断的容忍程度则要高一些,即便被打断,后续也能够拉起来继续运行。
二级配额组
对于单集群内的调度而言,重点介绍一下在通常的大数据平台中比较少见的二级配额组概念。在介绍二级配额组以前,首先介绍关于配额组的相关内容。简单而言,将物理集群的各类资源作成资源池以后,将一些资源整合到一个组里面就称之为配额组。在大数据平台上,做业就运行在配额组里面,而同一个配额组中的做业将会共享该配额组中的全部资源。而常见的一级配额组策略,存在着不少的问题。举例而言,若是一级配额组具备1000个CPU内核,而有100个用户在共同使用该配额组,某一时刻某一用户提交了一个很是大的做业,因而占满了整个配额组的1000个CPU内核,进而致使其余用户的做业所有须要等待。
为了解决上述状况中所出现的问题,就须要使用二级配额组。二级配额组在一级配额组的基础之上进行了进一步细分,设定了每一个用户所可以使用的资源上限。每一个一级配额组能够分为多个二级配额组,这样作的目的就是为了更好地利用资源。在二级配额组中,资源能够实现共享,可是即使某个用户须要使用的资源不少,也没法超过该二级配额组资源上限,所以能够比较好地保证用户体验。
与通常的大数据系统不一样,MaxCompute除了可以实现单集群内部调度以外,还能够实现多集群之间跨集群的全局调度,这也是MaxCompute强大能力的体现。单个集群可能会受制于各类因素而没法实现扩容,所以须要实现集群级别的水平扩展。
对于业务量巨大的应用而言,为了保证当单个集群发生宕机的时候业务依旧可以正常运行,因此须要让业务在多个集群上运行,来保证保证业务的高可用。这时候就须要全局的跨集群调度能力,当一个做业进来以后,须要分析该做业能够向哪些集群上进行调度,以及目前哪些集群可供使用而且比较空闲。而此时还会涉及数据多版本的问题,由于同一份数据存储在不一样的集群之中,就会带来数据不一致的问题。此外,对于同一份数据的不一样版本,也须要考虑应该具体的计算和数据复制策略,而阿里云MaxCompute也是通过了大量经验的积累才使得上述策略更加完善。
4、数据安全
对于一个企业而言,使用大数据计算平台时最为关心的就是数据安全问题。从阿里巴巴的经验来看,在数据安全方面,用户最为担心的主要有三点,第一点:将数据放在平台之上,其余人可否看到;第二点:将数据放到平台或者服务之上,提供服务的人是否会看到数据。第三点:将数据托管到大数据平台之上,若是平台出现了问题,那么数据怎么办。
对于用户的这些忧虑,MaxCompute都能比较完善地进行处理,用户基本上无需担忧数据的安全性。首先,MaxCompute平台具备完善的鉴权和受权机制,数据是属于用户的,而不是平台的,虽然平台帮助用户进行存储和计算,可是却不具备数据全部权,不管是对数据进行访问仍是计算都须要鉴权和受权。不管是其余用户仍是平台方,在没有受权的状况下,都没法看到数据。此外,受权的维度也比较多样,包括表级别、列级别和做业级别。而由于MaxCompute是云上大数据平台,自然地具有多租户的特色,所以须要实现各个租户之间的数据和计算隔离。对于数据而言,MaxCompute平台实现了物理隔离,从根本上消除了数据的安全性问题。此外,平台还提供了严格的权限控制策略,用户没法查看其余用户的数据。此外,MaxCompute还提供了E2E全链路存储加密,这对于金融机构显得尤其重要;还提供了CRC校验,保证了数据正确性,并且这部分能力已经在阿里巴巴内部使用了多年,已经很是完善;最后MaxCompute平台还为用户提供了数据脱敏等功能,方便用户使用。
原文连接 更多技术干货 请关注阿里云云栖社区微信号 :yunqiinsight