简述Shuffle Manager
首先声明一点,笔者之前写的spark shuffle调优,基于的Shuffle Manager是HashShuffleManager。而Spark1.2.x以后,HashShuffleManager不再是Spark默认的Shuffle Manager。
Spark1.2.x以后,Spark默认的Shuffle Manager是SortShuffleManager。
但是强调一点,之前文章提到的shuffle优化的点,同样适用于SortShuffleManager。比如:合并map端输出文件、调节map端内存缓冲和reduce端内存占比。
SortShuffleManager的原理如图,两个特点:
- SortShuffleManager对每一个redcue task要处理的数据,默认是排序的;
- SortShuffleManager不会像HashShuffleManager那样,创建多份磁盘文件(详见:《Spark调优之Shuffle调优 合并map端输出文件》),SortShuffleManager是一个task只写入一份磁盘文件,不同reduce task拉取的不同数据,用offset划分界定。