内核源码分析——shuffle

中华石衫版本

---------------------------------------------------------------------

1——每个shuffleMapTask都会为每个ResultTask创建一份bucket缓存,以及对应的shuffleBlockFile磁盘文件;

2——shuffleMapTask的输出,会作为MapStatus,发送到DAGScheduler的MapOutputTrackerMaster,MapStatus包含了每个ResultTask要拉取数据的大小;

3——每个ResultTask会用BlockStoreShuffleFecher去MapOutputTrackerMaster获取自己要拉取的文件的信息,然后底层通过BlockManager将数据拉取过来;

4——每个ResultTask拉取过来的数据,其实就会组成一个内部的RDD,将shuffledRDD,优先放入内存,如果不够再写入磁盘;

5——然后每个ResultTask针对数据进行聚合,最后生成MapPartitionsRDD,就是我们进行reduceByKey等操作希望获得的那个RDD;

6——新版本中,引入了consolidation机器,提出了shuffleGroup概念。可以将shuffleMapTask追加到之前的写入中,相当于对多个shuffleMapTask的输出进行了合并,从而减少了

本地文件的数量;

猜你喜欢

转载自www.cnblogs.com/muyue123/p/13210085.html