前言

大数据浪潮汹涌来袭,这绝不仅仅是信息技术领域的革命,更是在全球范围引领社会变革的机遇。大数据的集群计算开源软件Spark在大数据计算平台应用领域日益凸显其重要地位。如果大数据技术领域从业人员的技术水平仍停留在只知使用开源软件,而不从开源软件的原理、架构上去理解,不到源码中去体会细节,则难以从根本上彻底解决现实工作中遇到的技术问题,更难以胜任大数据领域的技术创新工作。

可以预见,大数据的处理将越来越强调实时处理。Spark Streaming是建立在Spark上的实时计算框架,在Spark的各子框架中处于举足轻重的地位。彻底掌握Spark Streaming的同时,也能加深对Spark Core技术的理解和掌握,还能具备开发同样高端的Spark应用程序的实力。对于有志向的Spark学习进阶者来说,深入了解Spark Streaming的源码是提高核心竞争力的捷径。

本书不仅对Spark Streaming的API做总结性介绍,而且重点针对Spark 1.6.x的Spark Streaming进行源码剖析。该书的开始部分对Spark的基本原理有一些阐述,但主要是彻底深入剖析Spark Streaming的内部原理。

读源码的人都怕自己走进大量源码的迷宫。为了提高源码学习效率,本书在剖析源码前,会对源码实现的功能的大致原理和流程轮廓进行介绍。书中有方便源码剖析的流程图,这对于理解和掌握Spark Streaming的各个功能非常重要。读者看到复杂的流程图时不一定要立刻全部理解掌握,但可以在源码学习过程中经常回过头来对照流程图以加深印象。

为了在书的页面内清晰展示复杂的流程图,书中绝大多数流程图采取了从上至下的树状结构来体现调用关系。每个方框中注明了类和方法,被其调用的类的方法会在下一行从左至右依次显示,调用和被调用的类方法间用有向线连接。有些方框上部会给出类的成员变量,其类型就是方框中指明的类。粗箭头不是表示调用关系,而是表示传递消息。

源码剖析过程中,源码中关键的类名、方法名、注释会以粗体显示,使读者清楚重点。读者应以粗体部分为重点进行阅读,其他部分可以粗略浏览。有些源码篇幅过大,可能会省略其中的部分代码,以突出当前读者需要阅读的源码主体。

王家林 夏阳

2017年2月27日于北京