大数据技术 MapReduce的shuffle过程
沉沙 2018-09-27 来源 : 阅读 2336 评论 0

摘要:本篇教程探讨了大数据技术 MapReduce的shuffle过程,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

本篇教程探讨了大数据技术 MapReduce的shuffle过程,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入。

<

本文是学习时的自我总结,用于日后温习。如有错误还望谅解,不吝赐教。

 
将Map的输出作为Reduce的输入的过程就是Shuffle了,这个是MapReduce优化的重点地方
Shuffle 过程
①   Map在内存中开启一个默认大小100MB的环形内存缓冲区用于输出
②   当缓冲区内存达到默认阈值 80% 时,Map 会启动守护进程,把内容写到磁盘上,这个过程叫做Spill。另外的20% 内存可继续写入数据,写入磁盘和写入内存互不干扰
③   如果缓存区被撑满,Map 会阻塞写入内存的操作,在写入磁盘操作完成后再继续写入内存
④   排序阶段是在写入磁盘的时候进行的,如果有Combiner,排序前会执行Combiner
⑤   每次Spill写入磁盘操作会产生溢出文件,当Map输出全部完成后,Map会合并这些文件
此处的小文件合并,是对于不同分区进行小文件合并,即同一个Map输出的所有小文件应该根据分区进行文件合并
⑥   Reduce阶段中,一个Partition对应一个Reduce作业,Reduce会根据Partition找到对应的map输出文件,进行复制操作,复制过程中Reduce会进行排序操作和合并文件操作
 
Shuffle 优化
①   分区:默认哈希算法分区,满足不了业务需求时需要按业务要求重写
public int getPartition(K key, V value, int numReduceTasks) {
    return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;   }
②   分组:默认相同的Key在一组,如果业务要求某些不同的Key按一组来调用一次reduce(),这时需要重写
③   排序:默认按字典排序,如果业务上要求不是这样,比如要求降序或者按其它条件来排,需要重写

   

本文由职坐标整理发布,学习更多的大数据技术相关知识,请关注职坐标大技术云计算大技术技术频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved