• Reducetask机制


    Reduce大致分为copy、sort、reduce三个阶段,重点在前两个阶段。copy阶段包含一个eventFetcher来获
     
     
    取已完成的map列表,由Fetcher线程去copy数据,在此过程中会启动两个merge线程,分别为
     
     
    inMemoryMerger和onDiskMerger,分别将内存中的数据merge到磁盘和将磁盘中的数据进行merge。待
     
     
    数据copy完成之后,copy阶段就完成了,开始进行sort阶段,sort阶段主要是执行fifinalMerge操作,纯粹的sort阶段,完成之后就是reduce阶段,调用用户定义的reduce函数进行处理。
     
     
    详细步骤:
     
     
    Ø Copy阶段,简单地拉取数据。Reduce进程启动一些数据copy线程(Fetcher),通过HTTP方式请求maptask
     
     
    获取属于自己的文件。
     
     
    Ø Merge阶段。这里的merge如map端的merge动作,只是数组中存放的是不同map端copy来的数值。
     
     
    Copy过来的数据会先放入内存缓冲区中,这里的缓冲区大小要比map端的更为灵活。merge有三种形式:内
     
     
    存到内存;内存到磁盘;磁盘到磁盘。默认情况下第一种形式不启用。当内存中的数据量到达一定阈值,就
     
     
    启动内存到磁盘的merge。与map 端类似,这也是溢写的过程,这个过程中如果你设置有Combiner,也是
     
     
    会启用的,然后在磁盘中生成了众多的溢写文件。第二种merge方式一直在运行,直到没有map端的数据时
     
     
    才结束,然后启动第三种磁盘到磁盘的merge方式生成最终的文件。
     
     
    Ø 把分散的数据合并成一个大的数据后,还会再对合并后的数据排序。
     
     
    Ø 对排序后的键值对调用reduce方法,键相等的键值对调用一次reduce方法,每次调用会产生零个或者多个
     
     
    键值对,最后把这些输出的键值对写入到HDFS文件中。
  • 相关阅读:
    BZOJ3631: [JLOI2014]松鼠的新家
    网络流24题题目总会+题解
    BZOJ3930: [CQOI2015]选数
    BZOJ4816: [Sdoi2017]数字表格
    Launcher类源码分析
    平台特定的启动类加载器深入分析与自定义系统类加载器详解
    类加载器命名空间总结与扩展类加载器要点分析
    类加载器命名空间深度解析与实例分析
    类加载器实战剖析与疑难点解析
    类加载器命名空间实战剖析与透彻理解
  • 原文地址:https://www.cnblogs.com/tesla-turing/p/11958441.html
Copyright © 2020-2023  润新知