首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

走进大数据Mapreduce中

什么是mapreduce?

Mapreduce中,mapper阶段处理的数据如何传递给reducer阶段,是MapReduce框架中最关键的一个流程,这个流程就是Shuffle流程,很多人解释mapreduce是洗牌(打乱,打散),但是本质意义上的shuffle更像是一个逆过程,是将原来杂乱无章的数据变得更加有规律,更结构化,使计算过程更便捷的一个过程

为什么mapreduce需要shuffle流程

我们每个人其实都知道mapreduce是分布式计算抽象化成的两个函数,就是map和reduce

Map就是映射,负责数据的过滤分发;reduce是规约,负责数据的计算合并。Reduce需要远程拉取map输出落地的数据,故而reduce的输入就是map的输出,reduce还需要通过shuffle阶段来获取其数据

Shuffle流程解析

首先数据文件从hdfs拿到切分成block块,然后将每个块分片进行计算,每个切片会进入独立的环形内存缓冲区,在达到80%的阈值的时候spill溢写,此时会生成大量小文件,通过merge合并以后把小文件合并成临时文件落地到磁盘,再由reduce单独起一个线程去拉去这些数据进入一个环形内存缓冲区,同时进行80%阈值进行spill溢写,这里也会有小文件的生成,同样也得进行merge合并,最后进入reduce进行最后的合并处理阶段

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191112A0K99U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券