为何Spark更高效?

2021-09-06 10:02:23 浏览数 (1)

learn from 从0开始学大数据(极客时间)

Spark 的计算阶段

  • Hadoop MapReduce 简单粗暴地根据 shuffle 将大数据计算分成 Map 和 Reduce 两个阶段,然后就算完事了。
  • 而 Spark 更细腻一点,将前一个的 Reduce 和后一个的 Map 连接起来,当作一个阶段持续计算,形成一个更加优雅、高效的计算模型,虽然其本质依然是 Map 和 Reduce。 但是这种多个计算阶段依赖执行的方案可以有效减少对 HDFS 的访问减少作业的调度执行次数,因此执行速度也更快
  • 和 Hadoop MapReduce 主要使用磁盘存储 shuffle 过程中的数据不同,Spark 优先使用内存 进行数据存储,包括 RDD 数据。 除非是内存不够用了,否则是尽可能使用内存, 这也是 Spark 性能比 Hadoop 高的另一个原因

Spark 的作业管理

  • DAGScheduler 根据代码生成 DAG 图以后,Spark 的任务调度就以任务为单位进行分配,将任务分配到分布式集群的不同机器上执行

Spark 的执行过程

总结: Spark 有三个主要特性:

  • RDD 的编程模型更简单
  • DAG 切分的多阶段计算过程更快速
  • 使用内存存储中间计算结果更高效

这三个特性使得 Spark 相对 Hadoop MapReduce 可以有更快的执行速度,以及更简单的编程实现

0 人点赞