Spark SQL内核剖析 - (EPUB全文下载)
文件大小:0.23 mb。
文件格式:epub 格式。
书籍内容:
Spark SQL内核剖析
第1章 Spark SQL背景
第2章 Spark基础知识介绍
第3章 Spark SQL执行全过程概述
第4章 Spark SQL编译器Parser
第5章 Spark SQL逻辑计划(LogicalPlan)
第6章 Spark SQL物理计划(PhysicalPlan)
第7章 Spark SQL之Aggregation实现
第8章 Spark SQL之Join实现
第9章 Tungsten技术实现
第10章 Spark SQL连接Hive
第11章 Spark SQL开发与实践
总结
参考文献
封底
第1章 Spark SQL背景
技术的诞生往往都有着特定的历史背景,而对技术来龙去脉的了解有助于我们从宏观层面把握全局方向。本章从大数据概念产生以来10多年的技术发展轨迹讲起,简要回顾Spark SQL的演化历程。
1.1 大数据与Spark系统
大数据一词,最早出现于20世纪90年代,由数据仓库之父Bill Inmon所提及。2008年,Nature杂志出版了大数据专刊“Big Data”,专门讨论海量数据对互联网、经济、环境和生物等各方面的影响与挑战。2011年,Science出版了如何应对数据洪流(Data deluge)的专刊“Dealing w ith Data”,指出如何利用大数据中宝贵的数据价值来推动人类社会的发展。迄今为止,大数据并没有统一的标准定义,业界和学术界通常用5个方面的属性(5V)来描述大数据的特点:Volume(体量大)、Velocity(时效高)、Variety(类型多)、Veracity(真实性)、Value(价值大)。
大数据一方面意味着巨大的信息价值,另一方面也带来了技术上的挑战,使得传统的计算机技术难以在合理的时间内达到数据存储、处理和分析的目的。大数据应用的爆发性增长,已经衍生出独特的架构,并直接推动了存储、网络和计算技术的研究。Google公司于2003年在SOSP会议上发表论文介绍分布式文件系统GFS[1],于2004年在OSDI会议上发表论文介绍分布式大数据编程模型与处理框架MapReduce[2],于2006年再次在OSDI会议上发表论文介绍分布式数据库BigTable[3]的实现。以上三者统称为Google公司初期大数据技术的“三驾马车”,自此各种大数据存储与处理技术开始蓬勃发展。
Spark[4]分布式计算框架是大数据处理领域的佼佼者,由美国加州大学伯克利分校的AMP实验室开发。相比于流行的Hadoop[5]系统,Spark优势明显。Spark一方面提供了更加灵活丰富的数据操作方式,有些需要分解成几轮MapReduce作业的操作,可以在Spark里一轮实现;另一方面,每轮的计算结果都可以分布式地存放在内存中,下一轮作业直接从内存中读取上一轮的数据,节省了大量的磁盘IO开销。因此,对于机器学习、模式识别等迭代型计算,Spark在计算速度上通常可以获得几倍到几十倍的提升。得益于Spark对Hadoop计算的兼容,以及对迭代型计算的优异表现,成熟之后的Spark系统得到了广泛的应用。例如,在大部分公司中,典型的场景是将Hadoop(HDFS)作为大数据存储的标准,而将Spark作为计算引擎的核心。
经过多年的发展,Spark已成为目前大数据处理领域炙手可热的顶级开源项目。屈指一算,Spark从诞生到2018年,已经走过了整整9个年头。如图1.1所示,第一个版本的Spark诞生在2009年,代码量仅有3900行左右,其中还包含600行的例子和300多行的测试代码。当时,Hadoop在国外已经开始流行,但是其MapReduce编程模型较为笨拙和烦琐,Matei借鉴Scala的Collection灵感,希望开发出一套能像操作本地集合一样简捷、高效操作远程大数据的框架,并能运行于Mesos[6]平台上,于是就有了Spark最初的0.1版本和0.2版本。后来,Reynold Xin加入这个项目,在协助对Core模块进行开发的同时,在其之上启动了Shark[7]项目,希望能够让Spark更好地处理SQL任务,替代当时流行的Hive[8](基于Hadoop的数据仓库解决方案)。当然,这个版本的Shark在多个方面都存在先天的不足,Spark在后来的发展过程中将其废弃,另起炉灶,从头来过,这也就是众所周知的Spark SQL[9],相关细节会在后面进一步详述。
图1.1 Spark发展历程
在此期间,Spark经历了一个蓬勃的生长期,从2012年的0.6版本开始,Core模块开始趋于稳定,接近生产级别,不再是实验室的产物。我国的阿里巴巴团队开始将其用于线上正式作业,并取得了比使用MapReduce更好的效果。同时,Intel公司也开始投入力量到该项目的开发中。在0.7版本中,Tathagata Das开始加入Stream ing模块,使得Spark具备准实时的流处理能力。到了0.8版本,Spark正式支持在YARN[10]上的部署运行,Yahoo公司贡献了重要的代码,国内的阿里巴巴团队也开始将其正式部署到内部的云梯集群,搭建了300台专用Spark集群。在0.9版本中,图处理系统GraphX[11]正式成为独立模块,同年,Apache接受Spark成为顶级项目,从孵化期到正式项目,只经历了短短半年时间,这种速度在Apache开源社区是非常难得的。到了1.0版本,孟祥瑞等人加入DataBricks公司,主导的MLLib[12]也成为正式模块。至此,各个主要模块形成了较完整的Spark技术栈(生态系统),如图1.2所示。
可以看出,在2012—2014年,Spark经历了一个高速的发展过程,各个模块快速演进,各大公司和全球顶尖开发人员的加入,使得整个项目充满生命力和活力。DataBricks公司成立后,多数客户的需求集中在常用的数据处理方面,而这需要Spark系统有完善且强大的SQL能力。因此,在2014—2017年,Spark技术栈重点关注Spar ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Spark SQL内核剖析 - (EPUB全文下载)