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圈子算法,对于算法,我也是整本算法导论的人。而,如今却忘的一干二净。记忆会消失,不需要的事物会遗忘。


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

你可能感兴趣的:(MapReduce -shuffle的过程)