大数据小白系列 —— MapReduce流程的深刻说明

上一期咱们介绍了MR的基本流程与概念,本期稍微深刻了解一下这个流程,尤为是比较重要但相对较少被说起的Shuffling过程。程序员

 

Mapping缓存

上期咱们说过,每个mapper进程接收并处理一块数据,这块数据的大小默认就是一个HDFS数据块大小。网络

 

Mapper处理数据时,基于性能考虑,会使用缓存,缓存的大小有一个默认值(好比100MB),满了以后,将会写入磁盘文件。app

 

不过在写入以前,会在内存中进行分区(partition),分区的数量取决于reducer的数量,实际上也就是由MR框架决定,例如上图中是3个。在每一个分区内,数据会被按key进行排序,都完成以后,这些数据才会被写入磁盘。框架

 

因为缓存可能屡次被占满(上图中是3次),从而致使屡次磁盘写入,产生多个磁盘文件,因此每一个mapper结束以后,须要对本身所产生的多个文件进行合并(merge),合并出来的大文件一样进行分区及分区内的排序。性能

 

一般,这个合并后的文件会被压缩,以便减小磁盘存储成本,同时也有利于下降shuffling时的网络传输成本。大数据

 

这些都完成以后,这个所谓的“中间结果”文件,就静静地等待reducer来获取。spa

 

Reducingblog

当一个mapper完成工做以后,全部的reducer们都会收到通知,开始去取该mapper产生的数据文件,不一样的reducer取走不一样的分区内的数据。排序

 

因此取数这一步,并非等到全部的mapper都完成才开始,而是某个mapper一完成,reducer就会去取。

 

当全部mapper都完成,全部的中间结果都已被拷贝至reducer,才开始真正的reduce操做,对取来的多个分区数据进行合并和统一排序,最终用户所写的reduce方法会做用在排序后的每一条数据上,以产生最终结果。

  

Shuffling

上述所说的发生在mapping与reducing之间的数据排序、合并、及拷贝的过程,包括mapping侧的一部分好reducing侧的一部分,即图中红色框出部分,统称为shuffling。

 

这一步骤的特色是什么?就是重磁盘IO、重网络IO,知道这一点很重要。

 

- END - 

 

好了,本期就先到这儿,下一期讲讲MR的优势、局限性等内容。

喜欢本文的朋友们,欢迎长按下图关注订阅号程序员杂书馆,提早得到更多更新内容,以及领取大数据及Java经典资料。

相关文章
相关标签/搜索