Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的大数据处理的利用程序。并且提供了用于机器学习 (MLlib), 流计算(Streaming), 图计算 (GraphX) 等子模块, 1.4.0 版本更是提供了与 R 语言的集成,这使得 Spark 几近成了多领域通吃的全能技术。Spark 对数据的存储,转换,和计算都是基于1个叫 RDD(Resilient Distributed Dataset) 散布式内存的抽象,利用程序对需要计算的数据的操作都是通过对 RDD 的1系列转化 (Transformation) 和动作 (Action) 算子完成的,其中转化算子可以把1个 RDD 转成另外一个 RDD,如 filter 算子可以通过添加过滤条件生成1个只包括符合条件的数据的新的 RDD。动作算子负责完成终究的计算,如 count 算子可以计算出全部 RDD 表示的数据集中元素的个数。关于 Spark 所支持的算子 和使用方法请参考 Spark 官方网站。
Spark是全部BDAS的核心组件,是1个大数据散布式编程框架,不但实现了MapReduce的算子map函数和reduce函数及计算模型,还提供更加丰富的算子,如filter、join、groupByKey等。是1个用来实现快速而同用的集群计算的平台。
Spark将散布式数据抽象为弹性散布式数据集(RDD),实现了利用任务调度、RPC、序列化和紧缩,并为运行在其上的上层组件提供API。其底层采取Scala这类函数式语言书写而成,并且所提供的API深度鉴戒Scala函数式的编程思想,提供与Scala类似的编程接口