Spark 是专为大规模数据处理而设计的快速通用的计算引擎。用来构建大型的、低延迟的数据分析应用程序。可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等。
简介
Spark 是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,是一种与 Hadoop 相似的开源集群计算环境,它扩展了MapReduce计算模型,高效的支撑更多计算模式,包括交互式查询和流处理。
Spark有火花,鼓舞的意思,称之为Spark的原因是,创始人希望这款产品能够激发基于Mesos的几款创新产品。
特性
高效:运行速度快
易用:支持Java、Python和Scala的API,支持多种高级算法
通用:提供了大量的库,提供了统一的解决方案
兼容:方便与其他的开源产品进行融合
基本组成
1)Spark Core:
Spark的核心功能实现,将分布式数据抽象为弹性分布式数据集(RDD),实现了应用任务调度、RPC、序列化和压缩,并为运行在其上的上层组件提供API。相当于MapReduce。
2)Spark SQL:
是Spark处理数据的一个模块,提供了非常强大的API。跟基本的Spark RDD的API不同,Spark SQL中提供的接口将会提供给Spark更多关于结构化数据和计算的信息。在内部,SparkSQL使用额外的结构信息来执行额外的优化,在外部,使用SQL和DataSet的API与之交互。
3)Spark Streaming:
是Spark提供的实时数据进行流式计算的组件,能够和Spark的其他模块无缝集成。
4)Spark Mllib:
提供常用机器学习算法的实现库,同时包括相关的测试和数据生成器。Spark的设计初衷就是为了支持一些迭代的Job, 这正好符合很多机器学习算法的特点。
5)Scala:
是一门多范式的编程语言,一种类似Java的编程语言。Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。