回顾大数据技术领域大事件,最先可追溯到06年Hadoop的正式启动,而环顾四下,围绕着数据库及数据处理引擎,业内充斥着各类各样的大数据技术。这是个技术人的好时代,仅数据库领域热门DB就有300+,围绕着Hadoop生态圈的大数据处理技术更是繁花似锦。在云栖社区2017在线技术峰会大数据技术峰会上,阿里云大数据计算平台架构师林伟作了题为《MaxCompute的大脑:基于代价的优化器》的分享,为你们分享阿里巴巴大数据计算服务的大脑——基于代价的优化器的设计和架构。数据库
MaxCompute简介
大数据计算服务(MaxCompute)是一种快速、彻底托管的PB/EB级数据仓库解决方案,MaxCompute具有万台服务器扩展能力和跨地域容灾能力,是阿里巴巴内部核心大数据平台,承担了集团内部绝大多数的计算任务,支撑每日百万级做业规模。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,可以更快速的解决用户海量数据计算问题,有效下降企业成本,并保障数据安全。安全
MaxCompute的研发思路主要分为如下四个方面:
服务器
高性能、低成本和大规模。但愿打造的MaxCompute平台可以提运算的高性能,尽量下降用户的使用成本,而且在规模上面可以达到万台机器以及多集群的规模。架构
稳定性,服务化。但愿MaxCompute平台可以提供稳定性和服务化的方式,使得用户不用过多地考虑分布式应用的难度,而只须要注重于用户须要进行什么样的计算,让系统自己服务于用户,并可以提供稳定性,服务化的接口。机器学习
易用性,服务于数据开发者。但愿MaxCompute平台是易用的,而且可以很方便地服务于数据开发工程师,不须要数据工程师对于分布式的场景进行很深的理解,而只要关注于须要用这些数据进行什么样的运算就能够,接下来就是由MaxCompute平台帮助数据开发工程师高效而且低成本地执行本身的想法。分布式
多功能。但愿MaxCompute可以具备更多的功能,不单单是支持流计算、图计算、批处理和机器学习等,而但愿更多种类的计算可以在MaxCompute平台上获得更好的支持。oop
MaxCompute的大脑——优化器
基于以上的研发思路,MaxCompute平台须要拥有一个更增强大的大脑,这个大脑须要更加理解用户的数据,更加理解用户的计算,而且更加理解用户自己,MaxCompute的大脑须要可以帮助用户更加高效地优化运算,经过系统层面去理解用户到底须要进行什么样的运算,从而达到以前提到的各类目的,使得用户可以从分布式场景中脱离出来,没必要去考虑如何才能使得运算高效地执行,而将这部分工做交给MaxCompute的大脑,让它来为用户提供更智能的平台,这也就是MaxCompute所可以为用户带来的价值。性能
那么MaxCompute的大脑到底是什么呢?其实就是优化器。优化器可以将全部信息串联在一块儿,经过理解系统中数据的相关性以及用户的企图,并经过机器的能力去充分地分析各类各样的环境,在分布式场景中以最高效的方式实现对于用户运算的执行。在本次分享中以离线计算做为主要例子来对于MaxCompute的大脑——优化器进行介绍。学习
首先对于离线计算的概念进行简单介绍,MaxCompute离线计算架构设计如上图所示。在计算层面每每会存在一个相似高级语言的脚本语言,MaxCompute提供的是类SQL的脚本语言,将脚本语言经过FrontEnd提交进来,以后通过处理转化成为逻辑执行计划,逻辑执行计划在Optimizer(优化器)的指导下翻译成更加高效的物理执行计划,并经过与Runtime的链接以后由伏羲分布式调度系统将物理执行计划分解到运算节点上进行运算。
上述过程的核心就在于如何充分地理解用户的核心计划并经过优化获得高效的物理执行计划,这样的过程就叫作优化器Optimizer。目前开源社区内的Hive以及Spark的一些优化器基本上都是基于规则的优化器,其实对于优化器而言,单机系统上就存在这样的分类,分红了基于规则的优化器和基于代价的优化器。大数据