主页 > 素材

大数据小白系列——MR(2)

时间:2019-05-15 来源:爆炸生活元素

这是大数据小白系列MR部分的第二期,上一期我们介绍了MR的基本流程与概念,本期稍微深入了解一下这个流程,尤其是比较重要但相对较少被提及的Shuffling过程。


Mapping侧

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


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


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


由于缓存可能多次被占满(上图中是3次),从而导致多次磁盘写出,产生多个磁盘文件,所以每个mapper结束之后,需要对自己所产生的多个文件进行合并,合并出来的“大文件”同样进行分区及分区内的排序。


通常,这个合并后的文件会被压缩,这样可以减少磁盘存储成本,同时也有利于降低shuffling时的网络传输成本。


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

Reducing侧

当一个mapper完成工作之后,所有的reducer们都会收到通知,开始去取该mapper产生的数据文件,不同的reducer取走不同的分区内的数据。


所以取数这一步,并不是等到所有的mapper都完成才开始,而是某个mapper一完成,reducer就会去取。


当所有mapper都完成,所有的中间结果都已被拷贝至reducer后,这些取来的多个分区数据将被合并和统一排序。


最后,才开始真正的reduce操作,对每一条数据,运行用户所写的reduce方法,以产生最终结果。

Shuffling

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


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


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

END



相关阅读