hadoop1.0与hadoop2.0mapper reducer个数设定

上周听师兄做分享,讲到他如何设定每个节点可以并行启动的最大mapper个数,当然这个参数并不是执行时实际启动的mapper的个数。因为执行时实际启动的mapper个数是由输入的split的个数决定的。在hadoop1.0版本里,集群最多并行的mapper个数可以这样计算,首先通过mapred.tasktracker.map.tasks.maximum 设定单个节点最多并行的mapper个数,然后再乘以集群的节点个数就可以,同理,最多的reducer数量可以先设置mapred.tasktracker.reduce.tasks.maximum ,再乘以集群节点数计算。

在hadoop2.0中不在使用tasktracker和jobtracker的框架。不过我在mapred-site.xml配置文件里看到这两个参数,mapreduce.map.cpu

.vcores,mapreduce.reduce.cpu.vcores,分别是每个map任务用到的vcore数量和reduce任务用到的vcore数,默认都是1,所以最大并行个数可以通过集群所有的vcore个数来确定。

而在任务运行时的mapper个数一样由split个数确定,也就是与splitsize的大小有关。决定这些参数的设定在FileInputFormat接口里,可以这样设定spitsize,FileInputFormat.setMaxInputSplitSize(job, 1048576)。 而reducer个数可以通过job.setNumReduceTasks();   

如果没有通过代码设定,split大小与blocksize等参数有关,提供三篇篇参考文章 

http://blog.csdn.net/skywalker_only/article/details/40820275

http://segmentfault.com/q/1010000000758178

http://blog.csdn.net/mango_song/article/details/8750651

第三篇应该是针对hadoop1.0的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章