MapReduce理解
分类:突袭反恐任务

引子

何以需求MapReduce?

因为MapReduce能够“分而治之”,将计算大数量的纷纷职责分解成若干简单小任务。“轻巧”的意趣是:总计范围变小、就近节点总结数据、并行义务。

下边摆放一张《Hadoop权威指南》的流程图

【一句话版本】

输入文件 ->【map职责】split --> map --> partition --> sort --> combine(写内部存储器缓冲区) ~~ spill(独立线程写磁盘) --> merge --> map输出结果  ~~~ 【reduce任务】copy --> merge -->reduce --> 输出文件

Map阶段

split:文件首先会被切开成split,split和block的涉嫌是1:1要么N:1,如下图所示。

map :

M个map职务开端并行处理分配到的多少个split数据。输出数据格式如 <k,v>。

Partition:

功用:将map阶段的输出分配给相应的reducer,partition数 == reducer数

私下认可是HashPartitioner。之后将出口数据<k,v,partition>写入内部存款和储蓄器缓冲区memory buff。

spill:

当memory buff的数额达到一定阈值时,暗中同意十分之七,将出发溢写spill,先锁住那十分八的内部存储器,将这一部分数额写进本地球磁性盘,保存为二个偶尔文件。此阶段由独立线程调控,与写memory buff线程同步举办。

sort & combine:

在spill写文件以前,要对五分之四的数量(格式<k,v,partition>)举行排序,先partition后key,保证种种分区内key有序,假若job设置了combine,则再扩充combine操作,将<aa1,2,p1> <aa1,5,p1> 那样的多寡统一成<aa1,7,p1>。 最后输出四个spill文件。

merge:

四个spill文件通过多路归并列排在一条线序,再统十分之一一个文件,那是map阶段的最后输出。同临时间还会有贰个目录文件(file.out.index),记录各种partition的胚胎地点、长度。

reduce阶段

copy:三十二线程并发从各种mapper上拉属于本reducer的数据块(依照partition),获取后存入内存缓冲区,使用率高达阈值时写入磁盘。

merge:一直运行,由于分裂map的输出文件是从未sort的,因而在写入磁盘前要求merge,知道未有新的map端数据写入。最终运行merge对全部磁盘中的数据统一排序,产生七个聊起底文件作为reducer输入文件。至此shuffle阶段甘休。

reduce:和combine类似,都以将一直以来的key合併总括,最终结果写到HDFS上。

本文由金沙APP发布于突袭反恐任务,转载请注明出处:MapReduce理解

上一篇:HDFS理解 下一篇:没有了
猜你喜欢
热门排行
精彩图文