Spark 概述
1.Spark 是什么
Spark是软件基金会旗下的一个顶级项目,也是Apache软件基金会旗下最活跃的开源项目之一,诞生于加州大学伯克利分校的AMP实验室,是一个开源的基于内存的分布式计算框架。由于Spark是基于内存的,相对于MapReduce等计算框架大大提高了大数据处理的实时性,同时Spark也提供了高容错性和可打展性。
Spark优点
1.速度快
与Hadoop的处理框架MapReduce对比,基于内存的数据处理使用Spark来处理要比用MapReduce快100个数量级以上,即使是基于硬盘的数据处理Spark也要比MapReduce快10个数量级以上。Spark 与Hadoop在逻辑回归计算的性能对比如图7.1所示。
Spark提供了高效的DAG执行引擎,支持以内存的方式来提高处理数据流的速度。
2.易用性
Spark应用程序支持使用Java、Scala、 Python、 R语言进行快速开发,并且提供了超过80多种的高级别API操作的实现,这使得Spark使用者能够根据自己所掌握的开发语言非常快速的构建并行应用程序。Spark 还提供交互式的Scala、Python、 R语言的shell,使得我们开发和测试更加方便快捷。使用Python API完成Spark版本的词频统计如图7.2所示。
了解过MapReduce编程模型后都知道,开发完MapReduce代码后需要打包、上传到服务器、测试等操作,即使修改-一个小功能,想在生产环境中进行测试,需要经过的操作步骤也是非常繁琐的。而Spark提供了交互式的shell,我们可以直接把功能代码在shell中进行验证即可,这对于开发来说是非常便捷的。
3.通用性
Spark提供了-一个强有力的一栈式通用的解决方案(One Stack to rule them all),如图7.3所示。使用Spark能完成批处理、交互式查询(Spark SQL)、实时流处理(SparkStreaming)、图计算(GraphX) 及机器学习(MLlib) 。Spark 内部的这些组件都可以在一个Spark应用程序中无缝对接、综合使用。