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的。

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