刚开始接触hadoop平台的时候 部分初学者对于mapreduce中的maptask的数量是怎么确定的 可能有点迷惑,如果看了jobclient里面的maptask初始化的那段源码,那么就比较清楚了,MapTask的数量是由InputFormat来指定的,InputFormat生成多少个InputSpilt就会有多少个task。

因此,如果剩余Map slot的数量大于InputSpilt的数量,那么就启动的Map数量就是InputSplit的数量。
如果剩余Map slot的数量小于InputSpilt的数量,那么就启动的Map数量就是剩余的Map slot数量。
 
下面来看看常用的InputFormat都是怎么生成InputSplit的。
FileInputFormat(平时常用的TextInputFormat和KeyValueTextInputFormat都继承自它)会设置一个hiddenFileFilter把以_和.开头的文件过滤掉,遍历input里面的文件及其子目录中的所有文件,然后对于每个文件,默认是一个block生成一个InputSplit。因此Map的数量>=文件数量,跟block size有关系,会尽量按block来切分。
 
当我们利用mapreduce来对hbase进行查询的时候,会采用hbase自带的TableInputFormat格式,TableInputFormat是默认使用的HBase的InputStream,继承自TableInputFormatBase。一个InputSplit正好对应了一个Region,因此Map的数量取决于table有多少个region。
 

转载来自:http://www.cnblogs www.ysgj1688.com www.feifanyule.cn/ com/xiangyangzhu/

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(www.thd178.com){return geInt("mapred.reduce.tasks",1)}
因此,Reduce Task数目是由mapred.reduce.tasks指定,如果不指定则默认为1.
这就很好解释了wordcount程序中的reduce数量为1的问题,这时候map阶段的partition(分区)就为1了。

最新文章

  1. UWP开发必备:常用数据列表控件汇总比较
  2. Android Weekly Notes Issue #235
  3. 1010. Radix (25)(未完成)
  4. Mybatis之关联查询
  5. WebApi系列~自主宿主HttpSelfHost的实现
  6. redis k-v数据库、高速缓存、消息队列代理
  7. C# 控制台程序实现 Ctrl + V 粘贴功能
  8. Web安全开发注意事项
  9. SmartGit STUDY
  10. poj3177--Redundant Paths(边的双连通)
  11. Swift—静态属性- 备
  12. 软体project(两)——软体project
  13. django 实现登录时候输入密码错误5次锁定用户十分钟
  14. mbstowcs 和ifstream 前为何要setlocale
  15. 4.ASP.NET MVC 5.0 视图之模型绑定
  16. jackson支持LocalDate等java8时间
  17. IDEA的GUI连接数据库写入SQL语句的问题总结
  18. [学习笔记]插头dp
  19. [zabbix] zabbix从内部检测web页面
  20. HDU – 1050 Moving Tables

热门文章

  1. Swift项目,适配遇到的问题
  2. jQuery、Angluar、Avalon对比
  3. mysql中列属性
  4. CSS设置背景透明字体不透明
  5. scrapy--cnblogs
  6. dts--framework(二)
  7. python——获取数据类型
  8. python-12正则表达式
  9. python 函数function
  10. qq登录面板