第1章 Spark Streaming应用概述

Spark是一个类似于Hadoop的MapReduce的分布式计算框架,其核心是弹性分布式数据集(Resilient Distributed Dataset, RDD),提供了比MapReduce更丰富的模型,可以在内存中快速对数据集进行多次迭代,以支持复杂的数据挖掘算法和图形计算算法。

Spark包含Spark Core、Spark SQL、Spark Streaming、MLlib、GraphX等主要部件,如图1-1所示。

图1-1 Spark的主要部件

其中的Spark Core包含Spark的基本功能,是核心的计算引擎,并定义了RDD的API。其他的Spark部件都是构建在Spark Core之上的。

Spark Streaming是建立在Spark上的实时计算框架,提供了丰富的API,以支持Spark处理大规模流式数据。

这是一个流处理的时代。Spark十分强大的一个重要原因在于,它的流式处理可以在线使用图计算、机器学习或者SparkR的成果,这得益于Spark一体化、多元化的基础架构设计。在Spark Streaming中可以调用Spark SQL、MLlib、GraphX等其他子框架,无须任何设置。这是Spark无可匹敌之处。但Spark的应用中,Spark Streaming也是很容易出问题的。

Spark Streaming与其他子框架不同之处在于,它更像是Spark Core之上的一个复杂应用程序。如果要做Spark的定制开发,Spark Streaming的剖析也会提供最好的参考。