MaxCompute 2.0 NewSQL演进之路

简介: 10月14日,2017杭州云栖大会·阿里云大数据计算服务(MaxCompute)专场,阿里巴巴计算平台架构师林伟分享了主题《MaxCompute2.0的NewSQL演进之路》,介绍阿里云大数据计算服务MaxCompute 2.0在NewSQL上所做的优化和实践工作。

10月14日,2017杭州云栖大会·阿里云大数据计算服务(MaxCompute)专场,阿里巴巴计算平台架构师林伟分享了主题《MaxCompute2.0 NewSQL演进之路》,介绍阿里云大数据计算服务MaxCompute 2.0在NewSQL上所做的优化和实践工作。

 

DT时代,越来越多的企业应用数据步入云端,NewSQL也成为业内越来越热的话题,它可以帮助用户通过编程接口良好地访问和存储数据。本文将介绍阿里云MaxCompute应用NewSQL的背景、关键技术解读等内容。

f166ebdee02a845c37a1e551e4fdad7f27cb65c7 

 

背景

 

提到NewSQL就会不可避免地谈到SQL。上世纪80、90年代,大家会提到的数据处理、数据库一般就是指DataBase应用。DataBase是一个关系型数据库,有很强的结构和语义,任何人在写查询语言时都可以做快速交互式查询。但是随着互联网的快速发展,大量数据的产生,传统DataBase逐渐面临着一系列的挑战。

 

首先是横向扩展性较差;互联网环境下,传统DataBase对于结构化、非结构化数据,语音、视频数据的支持比较落后,造成不够灵活;容错能力弱,分布式环境下要求建立数据中心来负载大量数据,这就需要强容错的能力。因此,SQL的大数据能力难以满足潮流的发展,也就带来了NoSQL的诞生,用于处理非结构化数据。

 

NoSQL是非关系型数据库,弱语义,很灵活,并且支持非结构、半结构和结构数据,横向扩展性较强,能够很好地Scale。此外,NoSQL提供强大的UDF,在map和reduce处理数据时,UDF能够定义key、value,而且接口可以很好地支持非关系型运算,灵活性很高。并且所有的计算节点都是独立的,所以容错能力也很强。可以看出NoSQL的大数据能力明显强于SQL,也因此诞生了谷歌BigTable,MapReduce等大数据系统。

 

阿里云推出的NewSQL,就是想要结合SQL和NoSQL的优势。

 

NewSQL

 

NewSQL的原则是想要回归关系型数据库。做NoSQL时,程序员需要分别写map、reduce、value等等是什么,因此难以阐述清晰自己所做的工作,只有给到所有的coding细节才能了解。回归关系型,就是希望工程师描述的不是怎么去做(即How),而是在做什么(即What),别人读到NewSQL时就能明确工作内容。

 

NewSQL需要依赖强大的系统优化能力,通过强大的优化器能够整合多个功能,从而使得系统自适应生产高效物理执行计划。在这个过程中,我们需要同时保留NoSQL的特性,包括非结构化、强大的UDF集合、分布式支持等等。

 

我们的用户通过NoSQL手写高效的执行计划,具有以下问题:一方面,程序员不可能及时感受到数据和环境的变化,很容易造成数据倾斜的问题;另一方面,计算越来越复杂,上下游的壁垒下程序员不可能很快地分析出全局最优的执行计划;同时,计算需要能够分享知识,缺乏高层次强语义的语言则会阻碍这种分享;而且共享的资源环境下,单个程序员是缺乏系统全局观的。所以我们需要回归到NewSQL,让程序员描述他需要做什么,而由系统来优化得到高效的执行计划。

 

a0fbc47bc16b8e3194185981ddcfcc3e041b4ead

 

在图中的三个场景下,NewSQL其实都做到了很好地自适应。虽然希望程序员能够很好地描述自己所做的工作,但是因为缺乏灵活性,还是需要通过UDF在高层次语义上获取很好的平衡,使系统优化做到高性能、高智能、自适应的能力。

 

事实上,目前的整个行业都在朝着这个方向行进,比如微软提供Dryad引擎的同时,也提供Scope做优化工作;DataBricks在Spark之外也提供SparkSQL用于加快迭代;Hadoop更是经历了从MapReduce到Hive再到Hive2.0的升级;Google在MapReduce外也在力推具有SQL语义的Spanner。阿里云的MaxCompute1.0也在向MaxCompute2.0迈进,让系统帮助优化。

 

关键技术

 

为了实现SQL和NoSQL的平衡,一些关键技术需要了解。

 

支持非结构,半结构和结构化数据

 

互联网环境下,用户需要提供Serialize/Deserialize函数动态进行非结构到结构化的转换,从而提取出结构化的数据进行运算。由于传统DB的局限性,还需要支持用户自定义类型,丰富UDF功能,方便编程和语言的交互。用户还需要自定义分区,从而能够有效连接上下游,实现输入、输出与其他互联网应用相连。

47b40edd3670b13fd60cf26abe1b1cbe19f14caa

 

需要有强大的DAG执行图

 

这是为了突破MapReduce的束缚,从而进行循环迭代展开为DAG。而且需要有非对称图表达,从而支持复杂的物理执行计划。这样优化器才能产生高效Plan,使语言变得完整。

 

57ce8a9d7c2772d1e81adc8fac6b4b13d98d27d5

 

最重要的是完整的用户自定义函数体系

 

完整的UDF集合能使得关系型退化为函数型语言,可以构造任意的DAG执行计划,在语言上灵活互动,因此提供了:Serialize/Deserialize、多路Join函数、聚合处理函数、Processor完备分区函数(支持Hash/Range/Direct Hash)等等。

 

强大的优化器

 

强大的优化器可以提供存储过程的支持,从单一语句到成千上万的存储过程。NoSQL是函数型编程,能构建非常复杂的图,传统DB则是一条条语句提交上来,造成job分享效果较差。强大的优化器能够写出更加复杂的查询存储过程,从而使得逻辑执行计划非常庞大,优化空间更大,需要更先进的优化器,并且从RuleBased Opt慢慢演变成CostBased Opt。

 

4a21fa9a0aeda0c822eb81234aaf194921b60f26

ac55b6ca8cf2faf1e5c4b6aec2db8c6e7276a186

 

此外,想要优化器有别于单机场景,就需要考虑分布式。比如说Non-SQL场景下的众多UDF扩展,包括数据、用户、运算上的扩展,可以帮助用户生成非常好的Plan。

 

ba07f3f835890ef2c2cd205d86b472ba4a5ac74a

 

 

下图展示了一个有趣的例子,关于优化器与用户自定义函数(UDF)的结合效果。

 

85c05815e3c26f97d51909a8be6e2398a43b53c9

 

左边是没有理解UDF的效果,这种情况下优化性能较低,无法感知UDF的输出特性,从而产生低效的物理执行计划。右边则实现了UDF和优化器的良好互动,能够全局优化,有效和用户交互理解UDF的特性,使黑盒变成了灰盒。

 

实际例子

 

9b3bfa3cb40711237facb32f99758b2aed3369c1

 

图中的应用大大减轻了分布式Cost,并且做到了灵活性和优化性的平衡。其实UDF的一些特性是值得用户去思考的:

 

a.Row-wise?单调函数?

b.某些column不变(pass through)?

c.保持分片?保持排序?

d.Selectivity,data distribution of output等等。

 

和单机SQL不同的是分布式场景的优化。大量NoSQL的用户自定义函数、分布式场景中各种动态环境(分配worker的拓扑结构、Failure Region的分布)等因素下,想要做到编译时优化和运行时优化的平衡,就要求强大的引擎来进行运行时优化:选择分区数目,边界;选择Join方式;高效的Datashuffle方式。

 

总结

 

NewSQL的原则是整合NoSQL和OldSQL的优势,帮助开发工作者提高开发效率,实现交互式运算。通过强大的系统优化能力,希望成功地做到高可用、高可解释、高性能、大规模以及高自适应,从而带来整个MaxCompute生态的繁荣。

 

72ccf7c58bf501387a3ef37b75f08db7ad005013


6c4b69af9fd1b465628b63fcee73224de0b62357


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


阿里巴巴大数据-玩家社区 https://yq.aliyun.com/teams/6/

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

bba01b493e1c5d904e882b1c380673c6ebe49a98

 

 

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
分布式计算 大数据 MaxCompute
|
分布式计算 大数据 MaxCompute
操作系统顶级会议SOSP 阿里云MaxCompute开启NewSQL时代
  近日,第26届操作系统原理大会(SOSP)在上海举行,来自亚洲、欧洲、北美等地区的高校、学术机构和众多科技企业研究人员齐聚一堂。阿里巴巴受邀参加此次会议,除在展区展示系统软件技术的同时,阿里集团副总裁周靖人在BOF环节向参会人员介绍了阿里在数据库、计算、机器学习、网络等领域的多项重点技术。
3350 0
|
分布式计算 并行计算 调度
阿里妈妈MaxCompute架构演进 - AON(MPI)集群
我们的集群规模不断地在加大, 与此同时我们却有着不同的感受,明显感觉到了各种任务的运行效率都在变低,其中AllOrNothing这类任务表现尤为明显
5501 0
|
2月前
|
分布式计算 DataWorks IDE
MaxCompute数据问题之忽略脏数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
47 0
|
2月前
|
SQL 存储 分布式计算
MaxCompute问题之下载数据如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 0
|
2月前
|
分布式计算 关系型数据库 MySQL
MaxCompute问题之数据归属分区如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
35 0
|
2月前
|
分布式计算 DataWorks BI
MaxCompute数据问题之运行报错如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 1
|
2月前
|
分布式计算 关系型数据库 数据库连接
MaxCompute数据问题之数据迁移如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
31 0
|
2月前
|
分布式计算 Cloud Native MaxCompute
MaxCompute数据问题之没有访问权限如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
38 0
|
4天前
|
数据采集 搜索推荐 大数据
大数据中的人为数据
【4月更文挑战第11天】人为数据,源于人类活动,如在线行为和社交互动,是大数据的关键部分,用于理解人类行为、预测趋势和策略制定。数据具多样性、实时性和动态性,广泛应用于市场营销和社交媒体分析。然而,数据真实性、用户隐私和处理复杂性构成挑战。解决策略包括数据质量控制、采用先进技术、强化数据安全和培养专业人才,以充分发挥其潜力。
10 3

相关产品

  • 云原生大数据计算服务 MaxCompute