第33课:彻底解密Spark 2.1.X中Shuffle 中Mapper端的源码实现
本文根据家林大神系列课程编写 http://weibo.com/ilovepains
Spark是MapReduce思想的实现之一,在一个作业中,会把不同的计算按照不同的依赖关系分成不同的Stage,前面的Stage是后面Stage的Mapper,构建的一个有向无环图。我们研究Shuffle,实际上要研究Mapper端怎么实现,Reduce端怎么实现,以及连接Mapper端、Reduce端的过程,思路是非常清楚的。
我们回顾一下MapReduce思想在Spark的具体实现,到底如何进行Shuffle的,主要是根据依赖关系,如果有宽依赖,把我们的Stage进行划分,划分的时候就构成了MapReduce,当然可以有很多的Stage,构建出很多MapReduce的关系。从源码的角度,我们要思考一件事情:我们写Spark业务代码的时候是基于RDD进行编程