Spark是一个用来实现快速而通用的集群计算的平台。算法
Spark项目包含多个紧密集成的组件。Spark的核心是一个对由不少计算任务组成的,运行在多个工做机器或者是一个计算集群上的应用进行调度,分发以及监控的计算引擎。Sark核心引擎有着速度快和通用的特色,所以Spark支持为各类不一样应用场景专门设计的高级组件,这些组件关系密切而且能够互相调用。编程
Spark各组件密切结合的设计原理的优势:软件栈中全部的程序库和高级组件均可以从下层改进中获益以及可以构建出无缝整合不一样处理模型的应用。服务器
Spark各个组件以下图:机器学习
分别对各个组件进行介绍:分布式
Spark Core实现了Spark的基本功能,包括任务调度,内存管理,错误恢复,与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(RDD)的API定义。RDD表示分布在多个计算节点上能够并行操做的元素集合,是Spark主要的编程抽象。Spark Core提供了建立和操做这些集合的多个API。oop
Spark SQL是Spark用来操做结构化数据的程序包。经过Spark SQL,可使用SQL或者Hive的HQL来查询数据。Spark SQL支持多种数据源,还支持开发者将SQL和传统的RDD编程的数据操做方式相结合。学习
Spark Streaming是Spark提供的对实时数据进行流式计算的组件。好比生产环境中的网页服务器日志,Spark Streaming提供了用来操做数据流的API,而且与Spark Core中的RDD API高度对应。Spark Streaming还支持与Spark Core同级别的容错性,吞吐量以及可伸缩性。spa
Spark中的一个包含常见的机器学习功能的程序库,叫作MLlib。MLlib提供了不少种机器学习算法,包括分类,回归,聚类,协同过滤等,还提供了模型评估,数据导入等额外的支持功能。设计
Spark设计为能够高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时得到最大灵活性,Spark支持在各类集群管理器上运行,最多见的就是Hadoop YARN,Spark自带的一个简易调度器,叫作独立调度器。日志