HashShuffleManager

网友投稿 572 2022-11-21

HashShuffleManager

HashShuffleManager

1.普通机制

执行流程1.每一个 map task 将不同结果写到不同的 buffer 中,每个 buffer 的大小为 32K。buffer 起到数据缓存的作用。2.每个 buffer 文件最后对应一个磁盘小文件。3.reduce task 来拉取对应的磁盘小文件。总结1.map task 的计算结果会根据分区器(默认是 hashPartitioner)来决定写入到哪一个磁盘小文件中去。 ReduceTask 会去 Map 端拉取相应的磁盘小文件。2.产生的磁盘小文件的个数: M(map task 的个数)*R(reduce task 的个数)存在的问题,产生的磁盘小文件过多,会导致以下问题:1.在 Shuffle Write 过程中会产生很多写磁盘小文件的对象。2.在 Shuffle Read 过程中会产生很多读取磁盘小文件的对象3.在 JVM 堆内存中对象过多会造成频繁的 gc,gc 还无法解决 运行所需要的内存 的话,就会 OOM。4.在数据传输过程中会有频繁的网络通信,频繁的网络通信出 现通信故障的可能性大大增加,一旦网络通信出现了故障会 导致 shuffle file cannot find 由于这个错误导致的 task 失 败,TaskScheduler 不负责重试,由 DAGScheduler 负责 重试 Stage。

2.合并机制

总结产生磁盘小文件的个数:C(core 的个数)*R(reduce 的个数)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SortShuffleManager
下一篇:数据仓库的出现与背景
相关文章

 发表评论

暂时没有评论,来抢沙发吧~