处理业务,使用spark比MR快的原因
前言
从官网上看,使用spark处理业务要比MR快100倍左右。
原因主要有三点:
- 运算资源:内存&硬盘
- 根本原因:spark DAG任务划分减少了不必要的shuffle
- 资源申请粒度:进程&线程
内存&硬盘
注意:MR和spark最终的shuffle阶段(如果有),都避免不了写磁盘
MapReduce
MR在map阶段会在溢写阶段将中间结果频繁的写入磁盘,在reduce阶段再从磁盘拉取数据。频繁的磁盘IO消耗大量时间
mapTask、reduceTask工作机制
Spark
Spark不需要将计算的中间结果写入磁盘。这得益于spark的RDD(Resilient Distributed Dataset),即弹性分布式数据集。在各个RDD的分区中,各自处理自己的中间结果即可。在迭代计算时,这一优势更为明显