spark是一个用来实现快速而通用的集群计算的平台算法
他的一个主要特色是可以在内存中计算,于是更快。不过即便是必须在磁盘上进行的复杂计算,spark依然比MapReduce更加高效。sql
总的来讲,spark适用于各类各样原先须要多种不一样的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。经过一个统一的框架支持这些不一样的计算,spark能够简单低耗的把这些处理流程整合在一块儿。 所以spark的核心引擎由这通用和速度快的特色。apache
下面分别介绍各个组件:编程
spark core实现了spark的基本功能,包含任务调度、内存管理、错误回复、与存储交互等模块。spark core中还包含了对弹性分布式数据集(resilient distributed dataset) 简称RDD 的api定义。RDD表示分布分布在多个计算节点上能够并行操做的元素集合,是spark主要的编程抽象。spark core提供了建立和操做这些集合的多个api。api
spark sql 是用来操做结构化数据的程序包。经过spark sql咱们能够使用sql或者Apache Hive 版本的sql方言来查询数据。spark sql支持多种数据源,好比Hive表、Paquet以及Json等。开发这均可以在单个的应用中同时使用sql和复杂的数据分析。服务器
spark streaming 是spark提供的对实时数据进行流式计算的组件。好比生产环境中的网页服务器izhi,或者是网络服务中用户提交的状态更新组成的消息队列,都是数据流。spark streaming提供了用来操做数据流的api,而且与spark core中的RDD api高度对应。这样不管是操做内存或者是硬盘,或者是实时数据流,都能应对自如。从底层设计来看,spark streaming 支持与spark core同级别的容错行,吞吐量以及可伸缩性。网络
这是一个常见机器学习ML功能的程序库,叫作MLib。Mlib提供了不少中机器学习算法,包括分类、回归、聚类、协同过滤等。框架
GraphX 是用来操做图)(好比社交网络的朋友关系图)的程序库,能够进行并行的图计算。与spark streaming和spark sql相似,GraphX也扩展了spark的RDD api,能用来建立一个顶点和边都包含任意属性的有向图。GraphX还支持针对图的各类操做,好比图分割,和操做全部定点,以及经常使用图算法。机器学习
就底层而言,spark设计能够高效的在一个计算节点到术前个计算节点之间伸缩的计算,spark灵活的支持在各类集群管理器上运行,包括Hadoop YARN,Apache Mesos,以及spark自带的一个简易的调度器。若是要在没有安装任何集群管理器上安装spark,那么spark自带的独立调度器可让你轻松入门,而若是在已经安装了Hadoop YARN 或者Mesos的集群,你的应用一样能够流畅的运行在机器上。分布式
spark是由一个强大而活跃的开源社区开发和维护的。2009年做为一个研究项目在加州大学伯克利分校RAD实验室诞生。spark一开始是为交互式查询和迭代算法设计的,同时还支持内存式存储和高效的容错机制。
2009年诞生
2010年3月开源
2013年6月交给了apache基金会,如今已经成为了apache下面的顶级项目