spark相比hadoop的 优势如下

时间:2022-12-10 14:23:28

1、中间结果输出

  基于mr的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。处于任务管道承接的考虑,当一些查询翻译到mr任务时,旺旺会产生多个stage,而这些串联的stage又依赖于底层文件系统(如hdfs)来存储每一个stage的输出结果。

spark将执行模型抽象为通用的有向无环图,dag计划 着可以将多个stage的任务串联或者并行执行,而无需将stage中间结果输出到hdfs上面,类似的引起包括dryad tez

1、数据格式和内存布局

由于mr schema on read处理方式会引起较大的处理开销。spark抽象出分布式内存存储结构弹性分布式数据集rdd, 进行数据的存储。rdd能支持粗粒度写操作。但对于读取操作。rdd可以精确到每条几率,这使得rdd可以用来作为分布式索引,spark的特性是能够控制数据在不同节点上的分区,用户可以自定义分区策略,如hash分区。spark 和spark sql 在spark的基础上实现了列存储和列存储压缩

3、执行策略

 mr在数据shuffle之前花费了大量的时间来排序,spark则可以减轻上述问题带来的开销,因为spark任务在shuffle中不是所有情景都需要排序,所以支持基于hash的分布式聚合,调度中采用更为通用的任务执行计划 dag ,每一轮次的输出结果在内存缓存。

4、任务调度的开销

  传统的mr系统,如hadoop 是为了运行长达数小时的批量作业而设计的,在某些极端情况下,提交一个任务的延迟非常高。

  spark采用了事件驱动的类库 akka来启动任务,通过线程池复用县城来避免进程或线程启动和切换开销。