Spark Shuffle之Write 和 Read
前面已经和大家提到过Shuffle的具体流程和运用场景,也提到过通常shuffle分为两部分: Map阶段的数据准备和Reduce阶段的数据拷贝处理。 Shuffle Write理解: 提供数据的一端,被称作 Map 端,Map 端每个生成数据的任务称为Mapper;将在map端的Shuffle称之为 Shuffle Write 。 Shuffle Read理解: 接收数据的一端,被称作 Reduce 端,Reduce 端每个拉取数据的任务称为 Reducer;将在Reduce端的Shuffle称之为 Shuffle Read 。 spark中rdd由多个partition组成,任务运行作用于partition。spark有两种类型的task: ShuffleMapTask : 负责rdd之间的transform,map输出也就是 Shuffle Write。 ResultTask ,:job最后阶段运行的任务,也就是action(一个action会触发生成一个job并提交)操作触发生成的task,用来收集job运行的结果并返回结果到driver端。也就是 Shuffle Read 。 write和read原理 job依赖关系RDD结构图如下: 最终得到了整个执行过程,如下图所示: 这个执行过程中间就涉及到shuffle 过程; 前一个stage 的 ShuffleMapTask