Spark技术内幕:深入解析Spark内核架构设计与实现原理

发布时间: 2015-10-19 阅读数: 826

前言

诞生于2005年的Hadoop解决了大数据的存储和计算问题,已经成为大数据处理的事实标准。但是,随着数据规模的爆炸式增长和计算场景的丰富细化,使得Hadoop越来越难以满足用户的需求。针对不同的计算场景,开源社区和各大互联网公司也推出了各种大数据分析的平台,旨在满足特定应用场景下的计算需求。但是,众多的平台使得用户不得不为平台开发类似的策略,这增加了运维开发成本。
2009年诞生于AMPLab的Spark,它的设计目标就是为大数据的多种计算场景提供一个通用的计算引擎,同时解决大数据处理的4V难题,即Volume(海量)、Velocity(快速)、Variety(多样)、Value(价值)。正如Spark的核心作者之一的Ion Stoica所说,“The goal is to build a new generation of data analytics software,to be used across academia and industry。” Hadoop之父Doug Cutting也说过,MapReduce引擎将被Spark替代(Use of MapReduce engine for Big Data projects will decline,replaced by Apache Spark)。可以说,Spark自诞生之日起就得到了广泛的关注,也是近年来开源社区最活跃的项目之一。Spark 的1.X版本的每次发布,都包含了数百位贡献者的上千次提交。最新的版本是发布于2015年6月11日的1.4.0,是迄今为止Spark最大的一次版本发布,涵盖了210位开发者的贡献。
Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal和星环科技;Spark也被百度、阿里、腾讯、京东、携程、优酷土豆等互联网公司应用到多种不同的计算场景中,并且在实际的生产环境中获得了很多收益。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。
但是,当前并没有一本系统介绍Spark内核实现原理的书,而Spark内核是Spark SQL、Spark Streaming、MLlib、GraphX等多个模块的基础,这些模块最终的计算执行都是由内核模块完成的。为了在应用开发中做到游刃有余,在性能调优时做到有的放矢,需要了解内核模块的实现原理。笔者从Spark 发布版本0.8.1时开始关注Spark,并深入学习内核模块的架构实现原理。Spark在1.0发布后,内核模块趋于稳定,虽然内核模块依旧会有不断地改进和完善,但是整体的设计思想和实现方法是不会变的,因此笔者决定为Spark社区的用户和关注者写一本书,详细介绍Spark内核模块的实现原理。最终,笔者基于Spark 1.2.0版本完成了本书。
写作是一件严肃的事情,同样是一份苦差事,尤其是在工作比较忙的时候。本书在半年前就完成了基本的框架,但是随后又对本书进行了多次修改和完善。笔者认为,对一本架构分析的书,一个最基本的要求就是基于源码如实描述系统的实现,能做到这点就是一本及格的书;如果能做到分析这个架构的好坏,指出架构改进的方案,那么就是一本质量比较好的书;如果能高屋建瓴地进行再次抽象,指出类似架构不同实现的优劣,抽象出一些理论,那么这就是一本质量上乘,可以当作教科书的书。我深知自己的能力水平,希望这本书最起码是一本及格的书,即能基于源码如实描述系统的实现,对那些希望深入学习Spark架构实现的同仁有所帮助。

内容概述

第1章介绍了Spark的技术背景和特点,给出了架构的整体概述,并简单介绍了Spark的生态圈。
第2章介绍了Spark源码如何获取和学习环境如何搭建。
第3章是RDD的详细介绍,介绍了RDD的定义和Spark对于DAG的实现,最后通过RDD计算的详细介绍,讲解了Spark对于计算的实现原理。
第4章详细介绍任务调度的实现,包括如何通过DAG来生成计算任务,最后通过“Word Count”来加深对这个实现过程的理解。
第5章介绍了Spark的运行模式,尤其是Standalone模式。Standalone是Spark自身实现的资源管理和调度的模块,这里会详细介绍它的实现原理。
第6章是Executor模块的详细讲解。Executor是最终执行计算任务的单元,这章将详细介绍Executor的实现原理,包括Executor的分配、Task在Executor的详细执行过程。
第7章详细介绍了Spark对于Shuffle的实现原理,包括基于Hash和基于排序的实现。除了详细阐述基于Hash和排序的Shuffle写和Shuffle读之外,还介绍了Shuffle Pluggable框架,为需要实现特定Shuffle逻辑的读者介绍其实现原理。
第8章详细介绍了Spark的Storage模块,在详细介绍了模块的架构后详细解析了不同存储级别的实现细节。
第9章介绍了Spark在百度、腾讯和阿里等国内互联网领域的应用现状。

分享到:
热点图书
利用Python进行数据分析

利用Python进行数据分析

2015年10月20日发布 1585次阅读
Spark快速大数据分析

Spark快速大数据分析

2015年10月16日发布 1285次阅读
统计学基础

统计学基础

2015年10月26日发布 1169次阅读
数据挖掘:实用案例分析

数据挖掘:实用案例分析

2015年10月19日发布 1049次阅读
R软件及其在金融定量分析中的应用

R软件及其在金融定量分析中的应用

2016年01月13日发布 1005次阅读
R语言实战

R语言实战

2015年10月16日发布 985次阅读
登录 注册