Spark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UCBerkeleyAMPlab(加州大学伯克利分校的AMP实验室)所开源的类HadoopMapReduce的通用并行框架,Spark,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。(引自百度百科)
 
  由于原来的批处理框架MapReduce适合离线计算,却无法满足实时性较高的业务,所以Spark诞生了。Spark速度快,开发简单,可以同时兼顾批处理和实时数据分析。有时Spark框架被称作实时计算框架、内存计算框架或流式计算框架。
 
  Hadoop使用数据复制来实现容错性,而Spark使用RDD(resilientDistributedDatasets,弹性分布式数据集)数据存储模式来实现数据的容错性。RDD是只读的,分区记录的集合,在数据丢失后,RDD含有如何重建分区的相关信息,这就避免了使用数据复制,减少了对磁盘的访问。
 
  Spark也需要集群管理器和分布式存储系统,集群管理器有HadoopYARN、ApacheMesos和Spark原生集群,分布式存储可以用HDFFS、Casanadra、OpenStaackSwift和AmazonS3。Spark也支持多语言,其中,最推荐的是Scala,Spark和Scala可以紧密集成。
 
  Spark的内存适合于迭代计算,机器学习算法需要多次遍历训练集,可以将训练集缓存在内存里,节省了访问磁盘的开销。尽管如此,Spark本身的复杂性也困扰着开发人员,它的统计功能和R语言没有可比性。