• mapreduce的执行过程


    1.首先是map获取分片,分片的大小和分片规则取决于文件输入的格式,FileInputFormat是输入格式的一个基类,FileInputFormat下有几个重要的子类,分别是TextInputFormat,KeyValueTextInputFormat,NLineInputFormat等等,使用什么输入格式决定分片的分片大小和规则,以及map的处理方式。map处理完后有必要就进行分区,分区是为了在不同的reduce处理数据,有负载均衡的作用,使用几个reduce取决于Hadoop集群的性能。默认的分区方式是对key的hash值与reduce个数进行取模,reduce默认数为1个,分区之后就是分组,默认的分组也是根据key进行分组,当需要在分区的基础上继续进行细分的话,就可以使用分组,同一个分组的数据同时进入一个reduce,分组之后就是排序,排序是在分组的组里进行排序的,默认的排序规则也是根据key进行排序的。之后就是combiner,combiner必须在所有map执行完才能执行,Combiner作用是合并相同的key对应的value,combiner的作用1是减少map写入到磁盘的文件大小(磁盘io),作用2是减少reduce和map节点之间的io输出量(网络io)。combiner一般是直接使用reduce的方法。

    reduce阶段:reduce会根据分区去相应的节点复制数据,在进行排序之后进入reduce进行处理,之后数据输出。

  • 相关阅读:
    Java多线程在JavaWeb中的应用
    hibernate,spring,struts的流程以及使用理由
    hibernate如何实现持久化
    ibatis与hibernate有什么区别
    关于导出pdf的例子
    BusyBox
    Android中如何查看内存
    使用PopupWindow实现Menu功能
    ScrollView原理
    eclipse 代码提示时闪退问题
  • 原文地址:https://www.cnblogs.com/3chi/p/7390360.html
Copyright © 2020-2023  润新知