zoukankan      html  css  js  c++  java
  • 019_Map Task数目的确定和Reduce Task数目的指定

    注意标题:Map Task数目的确定和Reduce Task数目的指定————自然得到结论,前者是后者决定的,后者是人为指定的。查看源码可以很容易看懂

    1、MapReduce作业中Map Task数目的确定:  

    1)MapReduce从HDFS中分割读取Split文件,通过Inputformat交给Mapper来处理。Split是MapReduce中最小的计算单元,一个Split文件对应一个Map Task
    2)默认情况下HDFS种的一个block,对应一个Split。
    3)当执行Wordcount时:
       (1)一个输入文件小雨64MB,默认情况下则保存在hdfs上的一个block中,对应一个Split文件,所以将产生一个Map Task。
       (2)如果输入一个文件为150MB,默认情况下保存在HDFS上的三个block中,对应三个Split文件,所以将产生三个Map Task。
       (3)如果有输入三个文件都小于64MB,默认情况下会保存在三个不同的block中,也将产生三个Map Task。
    4)用户可自行指定block与split的关系,HDSF中的一个block,一个Split也可以对应多个block。Split与block的关系都是一对多的关系。
    5)总结MapReduce作业中的Map Task数目是由:
       (1)输入文件的个数与大小
       (2)hadoop设置split与block的关系来决定。

    2、MapReduce作业中Reduce Task数目的指定:  

    1)JobClient类中submitJobInternal方法中指定:int reduces=jobCopy.getNumReduceTasks();

    2)而JobConf类中,public int getNumReduceTasks(){return geInt("mapred.reduce.tasks",1)}
    因此,Reduce Task数目是由mapred.reduce.tasks指定,如果不指定则默认为1.
    这就很好解释了wordcount程序中的reduce数量为1的问题,这时候map阶段的partition(分区)就为1了。

  • 相关阅读:
    POJ2001Shortest Prefixes[Trie]
    UVA
    POJ2528Mayor's posters[线段树 离散化]
    COGS130. [USACO Mar08] 游荡的奶牛[DP]
    POJ1962Corporative Network[带权并查集]
    BZOJ1798: [Ahoi2009]Seq 维护序列seq[线段树]
    洛谷U4859matrix[单调栈]
    COGS247. 售票系统[线段树 RMQ]
    COGS1008. 贪婪大陆[树状数组 模型转换]
    COGS182 [USACO Jan07] 均衡队形[RMQ]
  • 原文地址:https://www.cnblogs.com/xiangyangzhu/p/5278328.html
Copyright © 2011-2022 走看看