首页 > 其他 > 详细

mapReduce和spark的shuffle

时间:2020-05-07 17:42:25      阅读:45      评论:0      收藏:0      [点我收藏+]

MapReduce的shuffle

1.input map shuffle reduce output 

2.shuffle的实现的功能:分区    分组   排序(key字典序)

3.map端的shuffle    context.write() 写入到环形缓冲区(内存区域),假设缓冲区设置的是100M,当达到缓冲区的80%的时候,就会溢写出一个小文件,溢出到磁盘之前做了二件事,分区   排序    两个reduce

技术分享图片

 

 merge  将小文件进行合并 

技术分享图片

 

 合并之后  分区内有序

技术分享图片

 

 merge之后  maptask结束 ,会通知appmaster我已经结束任务,am通知reduce拉取数据。

reduce shullfe:
reduce启动线程通过网络到每台机器上拉取属于自己的数据

技术分享图片

 

 reduce1会拉取属于自己的数据:

技术分享图片

 

 将整体分区的数据进行排序

技术分享图片

 

 技术分享图片

 

MapReduce  shuffle 优化

1.合理设置partition  使用多个reduce处理输出结果

2.减少reducer从map拉取的数据量

(1)将map数据进行压缩(snappy 压缩质量不高 但是读取速度快,) 也可以在reduce输出的时候增加gzip 压缩实现  保证压缩率快速输出

 (2)合理使用combiner(减少reducer输入数据量)

spark 的shuffle   

ShuffleManager管理

HashShuffleManager

SortShuffleManager

抛弃了HashShuffleManager

技术分享图片

 

 技术分享图片

 

mapReduce和spark的shuffle

原文:https://www.cnblogs.com/yyfyl/p/12844131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!