概述:
Spark是一个基于内存计算的开源集群计算系统,目的是让数据分析更加快速。
Spark非常小巧玲珑,由加州伯克利大学AMP实验室的小团队开发。使用的语言是Scala,项目的core部分的代码只有63个Scala文件。(AMP实验室名字有点意思:
Algorithm Machine People,算法、机器、人)
Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使得Spark在某些工作负载方面表现得更加优越,换句话
说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代
工作负载。
Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。与Hadoop不同,
Spark和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作
分布式数据集。
Spark还引进了丰富的RDD(弹性分布式数据集)。RDD是分布在一组节点中的只
读对象集合。这些集合是弹性的,如果数据集一部分丢失,则可以对他们进行重建。
重建部分数据集的过程依赖于容错机制,该机制可以维护“血统”(即允许基于数
据衍生过程重建部分数据集的信息)。RDD被表示为一个Scala对象,并且可以从文
件中创建它;
1.首先Spark是基于内存的计算
2.提供了支持DAG图的分布式并行计算框架,减少多次计算之间的中间结果IO开销
3.提供Cache机制来支持多次迭代计算或者数据共享,减少IO开销
4.RDD之间维护了血统关系,一旦RDD挂掉了,能通过父RDD自动重建保证了容错性
5.移动计算而非移动数据,RDD分区可以就近读取分布式文件系统中的数据块到各
个节点内存中进行计算
6.使用多线程池模型来减少task启动开销
7.shuffle过程中避免不必要的sort操作
8.使用容错的高可伸缩性的akka做为通讯框架
1.Hadoop的MapReduce框架平台YARN
2.Apache Mesos框架平台3.Spark的Standalone框架平台
4.亚马逊的AWS平台