Apache Spark

历史

Spark在2009年由Matei Zaharia在加州大学柏克莱分校AMPLab开创，2010年透过BSD许可协议开源发布。2013年，该项目被捐赠给Apache软件基金会并切换许可协议至Apache2.0。。2014年2月，Spark成为Apache的顶级项目。2014年11月，Databricks团队使用Spark 刷新数据排序世界记录。

项目构成要素

Spark项目包含下列几项:

Spark核心和弹性分布式数据集（RDDs）

Spark核心是整个项目的基础，提供了分布式任务调度，调度和基本的I／O功能。而其基础的程序抽象则称为弹性分布式数据集（RDDs），是一个可以并行操作、有容错机制的数据集合。 RDDs可以透过引用外部存储系统的数据集创建（例如：共享文件系统、HDFS、HBase或其他Hadoop 数据格式的数据源）。或者是透过在现有RDDs的转换而创建（比如：map、filter、reduce、join等等）。
RDD抽象化是经由一个以Scala, Java, Python的语言集成API所呈现，简化了编程复杂性，应用程序操纵RDDs的方法类似于操纵本地端的数据集合。

Spark SQL

Spark SQL在Spark核心上带出一种名为SchemaRDD的数据抽象化概念，提供结构化和半结构化数据相关的支持。Spark SQL提供了领域特定语言，可使用Scala、Java或Python来操纵SchemaRDDs。它还支持使用使用命令行界面和ODBC／JDBC服务器操作SQL语言。在Spark 1.3版本，SchemaRDD被重命名为DataFrame。

Spark Streaming

Spark Streaming充分利用Spark核心的快速调度能力来运行流分析。它截取小批量的数据并对之运行RDD转换。这种设计使流分析可在同一个引擎内使用同一组为批量分析编写而撰写的应用程序代码。

GraphX

GraphX是Spark上的分布式图形处理框架。它提供了一组API，可用于表达图表计算并可以模拟Pregel抽象化。GraphX还对这种抽象化提供了优化运行。
GraphX最初为加州大学柏克莱分校AMPLab和Databricks的研究项目，后来捐赠给Spark项目。