MaxCompute理解数据、运算和用户的大脑:基于代价的优化器

摘要: 回顾大数据技术领域大事件,最早可追溯到06年Hadoop的正式启动,而环顾四下,围绕着数据库及数据处理引擎,业内充斥着各种各样的大数据技术。在云栖社区2017在线技术峰会大数据技术峰会上,阿里云大数据计算平台架构师林伟做了题为《MaxCompute的大脑:基于代价的优化器》的分享,为大家分享阿里巴巴大数据计算服务的大脑——基于代价的优化器的设计和架构。

更多精彩内容参见云栖社区大数据频道https://yq.aliyun.com/big-data;此外,通过Maxcompute及其配套产品,低廉的大数据分析仅需几步,详情访问https://www.aliyun.com/product/odps。

摘要:回顾大数据技术领域大事件,最早可追溯到06年Hadoop的正式启动,而环顾四下,围绕着数据库及数据处理引擎,业内充斥着各种各样的大数据技术。这是个技术人的好时代,仅数据库领域热门DB就有300+,围绕着Hadoop生态圈的大数据处理技术更是繁花似锦。在云栖社区2017在线技术峰会大数据技术峰会上,阿里云大数据计算平台架构师林伟做了题为《MaxCompute的大脑:基于代价的优化器》的分享,为大家分享阿里巴巴大数据计算服务的大脑——基于代价的优化器的设计和架构。

MaxCompute简介

大数据计算服务(MaxCompute)是一种快速、完全托管的PB/EB级数据仓库解决方案,MaxCompute具备万台服务器扩展能力和跨地域容灾能力,是阿里巴巴内部核心大数据平台,承担了集团内部绝大多数的计算任务,支撑每日百万级作业规模。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。

MaxCompute架构

图片描述

MaxCompute基本的体系结构如上图所示,最底层就是在物理机器之上打造的提供统一存储的盘古分布式文件存储系统;在盘古之上一层就是伏羲分布式调度系统,这一层将包括CPU、内存、网络以及磁盘等在内的所有计算资源管理起来;再上一层就是统一的执行引擎也就是MaxCompute执行引擎;而在执行引擎之上会打造各种各样的运算模式,比如流计算、图计算、离线处理、内存计算以及机器学习等等;在这之上还会有一层相关的编程语言,也就是MaxCompute语言;在语言上面希望为各应用方能够提供一个很好的平台,让数据工程师能够通过平台开发相关的应用,并使得应用能够快速地在分布式场景里面得到部署运行。

MaxCompute的研发思路

图片描述

MaxCompute的研发思路主要分为以下四个方面:

高性能、低成本和大规模。希望打造的MaxCompute平台能够提运算的高性能,尽可能降低用户的使用成本,并且在规模上面能够达到万台机器以及多集群的规模。

稳定性,服务化。希望MaxCompute平台能够提供稳定性和服务化的方式,使得用户不用过多地考虑分布式应用的难度,而只需要注重于用户需要进行什么样的计算,让系统本身服务于用户,并能够提供稳定性,服务化的接口。

易用性,服务于数据开发者。希望MaxCompute平台是易用的,并且能够很方便地服务于数据开发工程师,不需要数据工程师对于分布式的场景进行很深的理解,而只要关注于需要用这些数据进行什么样的运算就可以,接下来就是由MaxCompute平台帮助数据开发工程师高效并且低成本地执行自己的想法。

多功能。希望MaxCompute能够具有更多的功能,不仅仅是支持流计算、图计算、批处理和机器学习等,而希望更多种类的计算能够在MaxCompute平台上得到更好的支持。

MaxCompute的大脑——优化器

基于以上的研发思路,MaxCompute平台需要拥有一个更加强大的大脑,这个大脑需要更加理解用户的数据,更加理解用户的计算,并且更加理解用户本身,MaxCompute的大脑需要能够帮助用户更加高效地优化运算,通过系统层面去理解用户到底需要进行什么样的运算,从而达到之前提到的各种目的,使得用户能够从分布式场景中脱离出来,不必去考虑如何才能使得运算高效地执行,而将这部分工作交给MaxCompute的大脑,让它来为用户提供更智能的平台,这也就是MaxCompute所能够为用户带来的价值。

图片描述

那么MaxCompute的大脑究竟是什么呢?其实就是优化器。优化器能够将所有信息串联在一起,通过理解系统中数据的相关性以及用户的企图,并通过机器的能力去充分地分析各种各样的环境,在分布式场景中以最高效的方式实现对于用户运算的执行。在本次分享中以离线计算作为主要例子来对于MaxCompute的大脑——优化器进行介绍。

图片描述

首先对于离线计算的概念进行简单介绍,MaxCompute离线计算架构设计如上图所示。在计算层面往往会存在一个类似高级语言的脚本语言,MaxCompute提供的是类SQL的脚本语言,将脚本语言通过FrontEnd提交进来,之后经过处理转化成为逻辑执行计划,逻辑执行计划在Optimizer(优化器)的指导下翻译成更加高效的物理执行计划,并通过与Runtime的连接之后由伏羲分布式调度系统将物理执行计划分解到运算节点上进行运算。

上述过程的核心就在于如何充分地理解用户的核心计划并通过优化得到高效的物理执行计划,这样的过程就叫做优化器Optimizer。目前开源社区内的Hive以及Spark的一些优化器基本上都是基于规则的优化器,其实对于优化器而言,单机系统上就存在这样的分类,分成了基于规则的优化器和基于代价的优化器。

图片描述

在单机场景里面,Oracle 6-9i中使用的是基于规则的优化器,在Oracle 8开始有了基于代价的优化器,而Oracle 10g则完全取代了之前基于规则的优化器;而在大数据场景里面,像Hive最开始只有基于规则的优化器,而新版的Hive也开始引入了基于代价的优化器,但是Hive中还并不是正真意义上的代价优化器。而MaxCompute则使用了完全的基于代价的优化器。那么这两种优化器有什么区别呢?其实基于规则的优化器理论上会根据逻辑模式的识别进行规则的转换,也就是识别出一个模式就可能触发一个规则将执行计划从A改成B,但是这种方式对数据不敏感,并且优化是局部贪婪的,就像爬山的人只看眼前10米的范围内哪里是向上的,而不考虑应该先向下走才能走到更高的山顶,所以基于规则的优化器容易陷入局部优但是全局差的场景,容易受应用规则的顺序而生产迥异的执行计划,所以往往结果并不是最优的。而基于代价的优化器是通过Volcano火山模型,尝试各种可能等价的执行计划,然后根据数据的统计信息,计算这些等价执行计划的“代价”,最后从中选用代价Cost最低的执行计划,这样可以达到全局的最优性。

图片描述

这里分享一个具体的例子帮助大家理解为什么基于规则的优化器无法实现全局的最优化。上图中的这段脚本的意思就是先在A、B和C上面做完join,join出来的结果在某一列上面进行group by操作并计算出平均值。可以将上述的查询过程画成树形的逻辑执行计划,在数据库领域往往是bottom-up的,也就是对于逻辑计划树而言,叶子节点是输入,最终的目标输出则是根节点,所以最终的数据流向是从下向上的。可以看到在这个逻辑计划里面,首先是对于A、B、C三个表进行join,假设Size(B)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MaxCompute与OSS非结构化数据读写互通(及图像处理实例)

摘要: MaxCompute作为阿里巴巴集团内部绝大多数大数据处理需求的核心计算组件,拥有强大的计算能力,随着集团内外大数据业务的不断扩展,新的数据使用场景也在不断产生。在这样的背景下,MaxCompute(ODPS&…

装mysql最后一步没响应_每天14点遭遇惊魂时刻,如何一步一步揪出真凶?

“ 笔者所在的公司有一款大 DAU(日活)的休闲游戏。这款游戏的后端架构很简单,可以简单理解为通讯-逻辑-存储三层结构。其中存储层大量使用了 Redis 和 MySQL。图片来自 Pexels随着存量用户的增加,Redis 就隔三差五的出现问题。所以笔者打算把遇到的一系列…

form表单提交,后台实体类接收转义问题

问题:前台表单用ajax提交,data为validateForm.serializeArray(),后台用实体类接收参数,&符号被转义为&但是从request中直接取值是没问题的,请问如何解决实体类接收到的参数的转义问题。 代码如下:…

AI落地谁最强?AI Top 30+案例评选等你来秀

人工智能历经百年发展,如今迎来发展的黄金时期。目前,AI 技术已涵盖自然语言处理、模式识别、图像识别、数据挖掘、机器学习等领域的研究,在汽车、金融、教育、医疗、安防、零售、家居、文娱、工业等行业获得了令人印象深刻的成果。在各行业宣…

NAT网关之SNAT进阶使用(二)构建ECS级别SNAT出网方式

摘要: NAT网关是云上VPC ECS访问Internet的出入口。阿里云NAT网关控制台创建SNAT条目默认只支持交换机粒度。如何设置ECS粒度的SNAT规则呢,本文将为您揭晓。 背景 NAT网关是云上VPC ECS访问Internet的出入口。阿里云NAT网关控制台创建SNAT条目默认只支持…

java下载json需要的包_jenkins 获取插件,下载插件提速,配置国内镜像

jenkins 是目前比较流行的自动化运维工具,由于 jenkins 的镜像源是国外的所以在下载插件的时候会非常慢,甚至会超时,所以本文就重点介绍如何解决这个问题。正确的做法自然是修改为国内的镜像源,本文使用的是清华大学的镜像源站 清华大学开源软…

使用NAT网关轻松为单台云服务器设置多个公网IP

摘要: 背景 在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。 配置单云主机多公网IP功能流程 1、为ECS实例配置多块网卡。 2、创建NAT网关。 背景 在应用中,有时…

如何把手变成手控_手把手教您如何在生产环境直接web级设计图形报表

相信很多从事数据分析的兄弟姐妹,对于数据报表的设计,图形化的设计等等,都是停留在后台进行模板设计,设计好模板后,再上传到前台,发布进行显示,这也是目前绝大多数工具的模式。也难怪&#xff0…

老兵戴辉:华为操作系统28年史

戳蓝字“CSDN云计算”关注我们哦!来源 | 内容来自「最牛博弈」作者 | 老兵戴辉8月9日,东莞松山湖沸腾的一天,华为消费者业务CEO余承东发布了鸿蒙操作系统,中文来自山海经,英文叫HarmonyOS,不是以前传说的Oa…

深圳云栖大会人工智能专场:探索视频+AI,玩转智能视频应用

摘要: 在人工智能时代,AI技术是如何在各行业和领域真正的发挥应用和商业价值,带来产业变革才是关键。在3月28日深圳云栖大会的人工智能专场中,阿里云视频服务技术专家邹娟将带领大家探索熟悉的视频场景中,AI技术如何应…

javaee 中文帮助文档_大牛耗时三天整理的:微服务+Nginx+Kubernetes实战文档和面试题...

前言十年之前,相信大家掌握了Java EE互联网轻量级框架整合开发 SSM框架SpringMVCSpringMyBatis就已经能够轻轻松松找到一份薪资很高的java开发工作了,而如今只会SSM的小伙伴,已经找不到工作了,已经以Spring全家桶、微服务作为基础…

工作流实战_17_flowable 流程实例撤回

由于群里有些朋友对这个flowable还不是很熟悉,师傅(小学生05101)制作一个开源的项目源码,一共大家学习和交流,希望对有帮助,少走弯路 如果有不懂的问题可以入群:633168411 里面都是一些热心肠的人。 项目地址https://g…

arraylist数据5万占内存_2021年北京市高考报名人数会超过5万吗?大数据告诉您结果...

随着新疆维吾尔自治区高考报名最后一个发布,2021年全国各省、市、自治区报名均已经实施并已基本结束。大家关心的问题是,2021年全国高考报名人数会有多少?竞争激烈程度如何?众所周知,2020年全国高考报名人数为1071万人…

你需要熟练运用的12个命令行工具

摘要: 本文简要介绍了当前较为流行的12种对数据科学任务有价值的类Unix操作系统命令行工具:wget,cat,wc,head,tail,find,cut,uniq,awk,grep&#…

使用PyTorch从零开始构建Elman循环神经网络

摘要: 循环神经网络是如何工作的?如何构建一个Elman循环神经网络?在这里,教你手把手创建一个Elman循环神经网络进行简单的序列预测。 本文以最简单的RNNs模型为例:Elman循环神经网络,讲述循环神经网络的工作…

Flowable工作流总结_工作规范流程设计思路

工作规范工作流场景,一般是甲方发起,乙方宣导学习。 文章目录一、工作规范流程图绘制元素二、流程图展示三、工作规范流程图:四、流程说明五、知识补充六、问题思考?一、工作规范流程图绘制元素 绘制元素说明主键(ID)自定义,建议…

K8S精华问答 | CentOS下如何配置主机互信?

作为是Google开源的容器集群管理系。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。今天,我们就来看看关于k8s的精华问答吧。1Q: Kubernetes集群不能正…

专属微信二维码python制作_如何通过一行代码制作个人专属动态微信二维码?

各位同学好,今天又是一个晴空万里的周末,面对外面这么好的天气,不好好在家学习怎么对得起外面的这个天气。 在逛 Github 的时候,发现了一个好玩的二维码制作的库:https://github.com/sylnsfar/qrcode 。这个库的 star …

主板没有rgb接口怎么接灯_纯白信仰打造RGB主机,四件套提升100%性能-Thermaltake...

没有RGB就没有信仰是当代主机的普遍看法,为了满足用户的需求,不论是主板还是显卡亦或者机箱本身,支持ARGB灯光同步的产品向来最受欢迎。以这个需求出发,一期机箱改造计划就这样开始了。主板、CPU散热不用说不带RGB的都找不到&…

希望我在开始第一个机器学习项目之前就了解的那些事儿

摘要: 一份机器学习过来人的经验清单分享,主要是包含一些关于构建机器学习工作流以及Apache Spark应该注意的一些事项,希望这个清单能够帮助那些正在学习机器学习的相关人员少走一些弯路,节约一些时间。当我们学习任何一个新的内容…