MapReduce -shuffle的过程
博客专区 > 止静 的博客 > 博客详情
MapReduce -shuffle的过程
止静 发表于3年前
MapReduce -shuffle的过程
  • 发表于 3年前
  • 阅读 101
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 明天需要去面试,很可能技术的机构选型之上依然还会是老旧的 MapReduce体系,那么Shuffle可能是一个关注点。

前提:你必须对于 MapReduce编程框架有所了解。

概念解释: 

           

        shuffle:简单的名称称为 混洗。 事实上shuffle是一个非常非常简单的概念。简单点来说就是洗牌。

         shuffle:按照固定的规则,就【key,value】而言。


前提

 由于之前一直都是使用的 Hadoop1 ,并未使用 Hadoop Yarn,所以有关shuffle的机制,还请参考最新的底层API


1 : 不管是在Map端,还是Reduce端,不管是Hadoop MapReduce 还是Storm 。 对于数据的内部处理,很多时候都需要

对于是底层的 内存和磁盘做出一个合理的取舍。


 Map端:


                1 : 数据并不是简单的把他直接的写到了磁盘,这个过程比较复杂,他利用了缓冲的方式写到了内存,并且出于效率上的考虑,进行了预排序。

                2:每一个默认的Map任务都会有一个环形的缓存区。这个缓存区用来持有Map的输出,我印象中是100M左右, 一旦达到的固定的必烈,那么就会把内容写到磁盘之中,在写磁盘的过程之中,Map输出继续被写入到缓冲区。

                3:在写入到缓存区之前,会将这个数据进行一次分区和排序(这个分区和排序将会按照reduce的对应关系来生成)

                 4:关于这个分区的数据将通过Http的协议来传递给 Reduce端。


Reduce端:

            Reduce端口的第一个阶段是:copy 阶段,也就是说我们需要把数据从Map端口copy到Reduce端口。 如果Map的端口输出相当的小,那么就会被复制到 Reduce端。


          其次:在拉取到数据之后,我们将进入到了:排序的阶段。  sort phase 阶段,更恰当的来说,是一个合并的阶段,因为排序的阶段已经在Map 端口完成了。只需要在reduce端合并就可以了

           对于MapReduce,之前我也是能实现类qq圈子算法,对于算法,我也是整本算法导论的人。而,如今却忘的一干二净。记忆会消失,不需要的事物会遗忘。


           天道如此。看来之后的道路,适合走项目架构管理,而非技术专家。

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 117
博文 134
码字总数 125762
×
止静
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: