mr描述

作者: 七_seven | 来源:发表于2018-07-03 10:16 被阅读0次

    整体架构图:

    inputformat:主要用于描述输入数据的格式,其按照某个策略将输入数据切分成若干个split,并为mapper提供输入数据,将split解析成一个key/value对。

    mapper:将split传入的keyvalue对进行处理,产生新的keyvalue (k1,v1)-》(k2,v2)

    partitioner:作用是对mapper产生的中间结果进行分区,以便将key有耦合关系的数据交给同一个reducer处理,它直接影响reducer阶段的负载均衡。

    reducer:以map的输出作为输入,对其进行排序和分组,再进行处理产生新的数据集,即reducer (k2,list(v2))->(k3,v3)

    outputformat:主要用于描述输出数据的格式。

    map处理阶段:

    1)read阶段:MapTask通过用户编写的RecorderReader,从输入InputSplit中解析出一个个key/value.

    2)Map阶段:将解析出的key/value交给用户编写的Map函数处理,并产生一系列新的key/value.

    3)collect阶段:map函数生成的kv通过调用partitioner进行分片,并写入一个环形内存缓冲区中。

    4)split阶段,即溢写,当环形缓冲区满后,mr会将数据写到本地磁盘上,形成一个临时文件。

    5)combine阶段:所有数据处理完后,maptask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。

    reducetask阶段

    1)shuffle 阶段:Reduce Task从各个maptask上远程拷贝一片数据,并针对某一片数据,大小超过一定阈值则写到磁盘,否则直接放到内存中。

    2)merge阶段:在远程拷贝数据的同时,reducetask启动了3个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上的文件过多。

    3)sort阶段:采用了基于排序的策略将key相同的数据聚在一起,由于各个maptask已经实现了对自己的处理结构进行了局部排序,因此reducetask只需对所有数据进行一次归并排序。

    4)reduce阶段:将每组数据依次交给用户编写的reduce函数处理。

    5)write阶段:reduce函数将计算结构写到hdfs上。

    相关文章

      网友评论

          本文标题:mr描述

          本文链接:https://www.haomeiwen.com/subject/xiqduftx.html