Spark是什么
-
Spark是基于内存计算的大数据并行计算框架
-
Spark是MapReduce的替代方案
Spark与Hadoop
Spark是一个计算框架,而Hadoop中包含计算框架MapReduce和分布式文件系统HDFS,Hadoop更广泛地说还包括在其生态系统上的其他系统.
Spark的优势
中间结果输出
-
基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行储存和容错.当一些查询翻译到MapReduce任务是,往往会产生多个Stage,而这些串联的Stage又依赖于底层的文件系统来存储每一个Stage的输出结果.
-
Spark将执行模型抽象为通用的有向无环图执行计划(Directed Acyclic Graph,DAG).这可以将多个Stage的任务串联或者并行执行,而无须将Stage中间结果输出到HDFS中.类似的引擎包括Dryad,Tez
数据格式和内存布局
Spark抽象出分布式内存储存结构弹性分布式数据集RDD,进行数据存储.RDD能支持粗粒度写操作,但对于读取操作,RDD可以精确到每条记录,这使得RDD可以用来作为分布式索引.
执行策略
MapReduce在数据Shuffle之前花费了大量的时间来排序,Spark任务在Shuffle中不是所有情景都需要排序.所以支持Hash的分布式聚合,调度中采用更为通用的任务执行计划图(DAG),每一轮次的输出结果在内存中缓存.
任务调度的开销
-
传统的MapReduce系统,如Hadoop,是为了运行常达数小时的批量作业而设计的
-
Spark采用了事件驱动的类库AKKA来启动任务,通过线程池复用