Spark 在DAG调度阶段会将一个 Job 划分为多个 Stage,上游 Stage 做 map 工作,下游 Stage 做 reduce 工作,其本质上还是 MapReduce 计算框架。Shuffle 是连接 map 和 reduce 之间的桥梁,它将 map 的输出对应到 reduce 输入中,涉及到序列化反序列化、跨节点网络IO以及磁盘读写IO等。
1、HashShuffle
中间小文件个数 = Executor个数 × 下游reduceTask的个数,数目成倍减少。
- 引入了新概念 shuffleFileGroup
- groupby 和 join 都能触发 shuffle
开启consolidate机制之后,在shuffle write过程中,task就不是为下游st