2.2.7 Spark
Spark是一个通用的并行计算框架,由美国加利福尼亚州伯克利大学(UC Berkeley)的AMP实验室开发于2009年,并于2010年开源,2013年成长为Apache旗下大数据领域中最活跃的开源项目之一。Spark也是基于MapReduce算法模式实现的分布式计算框架,拥有Hadoop MapReduce所具有的优点,并且解决了Hadoop MapReduce中的诸多缺陷[13]。Spark采用Scala语言实现,提供了Java、Scala、Python、R等语言的调用接口。Spark的核心RDD(Reslient Distributed Dataset,弹性分布式数据集)是Spark底层的分布式存储的数据结构。Spark将数据保存在分布式内存中,为分布式内存的抽象理解提供了一个高度受限的内存模型。Spark逻辑上集中、物理上存储在集群的多台机器上。Spark是一种面向对象的函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集,具有运行速度快、易用性好、通用性强及随处运行等特点,适合大多数批处理工作,并已成为大数据时代企业大数据处理的优选技术,其中代表性企业有腾讯、Yahoo、淘宝及优酷土豆等。
Spark的四大特性如下。
1.快速性
如果在内存中运行MapReduce,则比Hadoop快100倍;如果在磁盘中运行,则比Hadoop快10倍。Spark使用先进的有向无环图执行引擎来支持非循环的数据流在内存中计算。
2.易用性
Spark提供超过80个高阶算子,这些算子使其很容易构建并行应用。这些算子支持多种语言(按照切合度排序为 Scala、Python、R语言)。
3.通用型
Spark有一个强大的堆库,包括SQL and DataFrames、MLlib for Machine Learning、GraphX和Spark Streaming,可在同一个应用中无缝地组合使用这些库。
4.跨平台型
Spark可以运行在Hadoop、Mesos、Standalone和Cloud上,可以访问不同的数据源,包括HDFS、Cassandra、HBase和S3。