Hadoop中maptask数量的决定因素
刚开始接触hadoop平台的时候 部分初学者对于mapreduce中的maptask的数量是怎么确定的 可能有点迷惑,如果看了jobclient里面的maptask初始化的那段源码,那么就比较清楚了,MapTask的数量是由InputFormat来指定的,InputFormat生成多少个InputSpilt就会有多少个task。
转载来自: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了。
最新文章
- UWP开发必备:常用数据列表控件汇总比较
- Android Weekly Notes Issue #235
- 1010. Radix (25)(未完成)
- Mybatis之关联查询
- WebApi系列~自主宿主HttpSelfHost的实现
- redis k-v数据库、高速缓存、消息队列代理
- C# 控制台程序实现 Ctrl + V 粘贴功能
- Web安全开发注意事项
- SmartGit STUDY
- poj3177--Redundant Paths(边的双连通)
- Swift—静态属性- 备
- 软体project(两)——软体project
- django 实现登录时候输入密码错误5次锁定用户十分钟
- mbstowcs 和ifstream 前为何要setlocale
- 4.ASP.NET MVC 5.0 视图之模型绑定
- jackson支持LocalDate等java8时间
- IDEA的GUI连接数据库写入SQL语句的问题总结
- [学习笔记]插头dp
- [zabbix] zabbix从内部检测web页面
- HDU – 1050 Moving Tables