票选最美云上大数据暨大数据技术峰会上,阿里云飞天一部计算平台高级专家无庸为大家带来题为“高可用大数据计算服务如何持续发布和演进”的演讲。本文先对MaxCompute架构进行了介绍,接着重点介绍在大数据计算服务下,高可用服务持续改进和发布的工具,包括Playback工具、Flighting工具和灰度上线、细粒度回滚等。 以下是精彩内容整理: MaxCompute 大数据计算服务(MaxCompute)是一种快速、完全托管的PB/EB级数据仓库服务。具备万台服务器扩展能力和跨地域容灾能力,是阿里巴巴内部核心大数据计算平台,支撑每日百万级作业规模。 MaxCompute是一种统一的大数据计算平台,MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,比如SQL、图计算、流计算和机器学习等,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。
MaxCompute不只对阿里集团内部用户开放,也向外部开放。天猫、淘宝、蚂蚁金服等都在使用MaxCompute,MaxCompute是阿里集团内部最关键的大数据平台,目前,MaxCompute机器已经有五万多台,数据表是百万级以上,开发者有8000多个,性能上是hadoop2倍等,从数据上可以感受到MaxCompute是名副其实的海量大数据平台,在业内能处理的数据量以及计算能力也是处于领先地位的。
MaxCompute底层是由阿里自主开发的盘古分布式存储系统和伏羲分布式调度系统组成,在此基础上,我们也开发了MaxCompute执行引擎,MaxCompute是统一的大数据计算平台,既能支持传统经典的批处理,也支持流计算、图计算、内存计算以及机器学习等,从这个角度来看,MaxCompute与spark定位非常相似;在此之上,MaxCompute支持灵活的语言,为了让用户能够无缝接入MaxCompute,我们也支持开源系统好多的API,包括spark API和Hive API等。 批处理计算
目前,对于阿里巴巴甚至业界来说,SQL类型的批处理是最经典最广泛的应用了,SQL批处理的流程如下: 用户提交一条类似SQL的脚本到MaxCompute后,MaxCompute会对SQL脚本进行编译并优化,然后用Runtime运行。 大数据计算服务 MaxCompute要做大数据计算的服务,并不像业界开源的hadoop、spark提供一套解决方案,我们需要提供一个365(天)x24(小时)的高可靠,高可用的共享大数据计算服务。 那么,有什么好处呢?它可以: – 使用门槛大大降低,用户不用关心运维升级等 – 共享细粒度使用资源,从而做到低成本,高效率 大数据计算服务强调稳定性,与持续发展之间存在天然的矛盾。在一个稳定运行的大数据计算服务上改进和发布新功能就像“空中换车”,在高速飞行的飞机上替换引擎而同时要保持平稳飞行,其中的挑战难度可想而知。 持续改进和发布中的挑战 MaxCompute每天都有百万级作业。如何能够平稳安全,用户无感知的发布新的功能?如何保证新版本的稳定性,没有bug,没有性能的回退?出现问题后如何能够快速止损等等? 面对外部用户,在测试时如何保证数据安全可靠呢? 针对以上挑战,我们提出在高可用服务下持续改进和发布了以下技术手段来克服: – MaxCompute Playback工具 – MaxCompute Flighting工具 – MaxCompute灰度上线,细粒度回滚 编译器Playback工具 MaxCompute目前主流的仍然是SQL类型应用,其中非常关键的模块就是编译优化器,我们需要快速提高我们编译器、优化器的表达能力,以及性能优化水平。 那么,如何能够保证升级过程中没有大的Regression? 每天有100万+个job,每天都在变化,如果人工分析的话,每个仅需要2分钟,需要91人年,这是不现实的,所以,我们开发了编译器Playback工具。 Playback工具用来解决编译器和优化器的测试验证功能,利用大数据计算平台的运算能力来自我验证新的编译优化器。 具体原理如下:
基于MaxCompute强大而灵活的编译扩展能力,编译器基于AST的编译器模型,使用了经典的Visitor模式。SQL脚本提交到系统后会将SQL脚本转化成抽象语法树,正常情况下的语法验证和分析等实现了标准的visitor,visitor对应于AST的验证等扩展性是非常好的,除了标准的visitor加入后,还可以加入一些有针对性的检查验证抽象语法树的新visitor,将这些visitor加到语法树上,就可以验证新的编译器和优化器生成出来的各种各样的产出是否OK,以此来验证新的编译器和优化器的能力。 自我验证
整个验证过程如下: 1. 当用户提交一条SQL脚本发给MaxCompute,利用MaxCompute本身灵活数据处理语言来构造分析任务; 2. 利用MaxCompute本身超大规模计算能力来并行分析海量用户任务,将一段时间用户作业抽出; 3. 利用MaxCompute灵活的UDF支持且良好的隔离方案,在UDF中拉起待测的编译器进行编译,之后再进行详细的结果分析。 整个过程都在MaxCompute完善的安全体系保护下,保障用户的知识产权。 Playback工具还有其它很丰富的作用,比如: 进行新版本的验证 精确制导找到触发新的优化规则的query,验证其查询优化是否符合预期 在语义层面对于query进行整体数据分析 – 对相应的用户发warning推动用户下线过时的语法 – 对query整体进行分析来确定下一步开发的重点 – 评估新版本在查询优化在执行计划上的提高程度 Flighting 工具 (责任编辑:本港台直播) |