Spark 概念学习系列之Spark相比Hadoop MapReduce的特点(二)
Spark相比Hadoop MapReduce的特点 (1)中间结果输出 基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。 出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层文件系统(如HDFS)来存储每一个Stage的输出结果。Spark将执行模型抽象为通用的有向无环图执行计划(DAG),这可以将多Stage的任务串联或者并行执行,而无须将Stage中间结果输出到HDFS中。 类似的引擎包括Dryad、Tez。 (2)数据格式和内存布局 由于MapReduce Schema on Read处理方式会引起较大的处理开销。 Spark抽象出分布式内存存储结构弹性分布式数据集RDD,进行数据的存储。 RDD能支持粗粒度写操作,但对于读取操作,RDD可以精确到每条记录,这使得RDD可以用来作为分布式索引。 Spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略,如Hash分区等。 Shark和Spark SQL在Spark的基础之上实现了列存储和列存储...
