Spark的生态圈体系架构与Hadoop略有不同。因为在Spark中只有数据的计算部分,没有数据的存储部分,因为Spark的核心就是它的执行引擎。下图展示了Spark的生态圈体系,以及访问每个模块的访问接口。
视频讲解如下:
- 离线执行引擎Spark Core
Spark Core是Spark的核心部分,也是Spark执行引擎。在Spark中执行的所有计算都是由Spark Core完成,它是一个种离线计算引擎。Spark Core提供了SparkContext访问接口用于提交执行Spark任务。通过该访问接口既可以开发Java程序,也可以开发Scala程序来分析和处理数据。SparkContext也是Spark中最重要的一个对象。
Spark中的所有计算都是Spark Core离线计算,因此Spark生态圈体系中不存在真正的实时计算。
- 数据分析引擎Spark SQL
Spark SQL是Spark用来处理结构化数据的一个模块,它的核心数据模型是DataFrame,其访问接口是SQLContext。这里可以把DataFrame理解成是一张表。当DataFrame创建成功后,Spark SQL可支持DSL语句和SQL语句来分析处理数据。由于Spark SQL底层的执行引擎是Spark Core,因此Spark SQL执行的本质也是执行的一个Spark Core任务。
Spark SQL和Hive是目前大数据生态圈体系中使用最广泛的两个大数据分析引擎。
- 流式计算引擎Spark Streaming
Spark Streaming是核心Spark API的扩展,它可实现可扩展、高吞吐量、可容错的实时数据流处理。但是Spark Streaming底层的执行引擎依然是Spark Core,这就决定了Spark Streaming并不是真正的流处理引擎,它是通过时间的采样间隔把流式数据编程小批量数据进行处理,其本质任然是批处理的离线计算。Spark Streaming访问接口是StreamingContext。
- MLlib与GraphX
MLlib是Spark中支持机器学习算法的一个框架;而GraphX则是Spark支持图计算的框架。
MLlib和GraphX主要研究的是各种算法。因此在大数据体系中将不会作为重点的内容进行介绍。