爲map/reduce作業設置map/reduce任務的數量確定了將使用多少個map/reduce進程來處理作業。考慮一下,如果你真的需要這麼多的java進程。
也就是說,地圖任務的數量大多是自動確定的;設置地圖任務的數量只是一個提示,可以增加由Hadoop確定的地圖數量。
對於減少任務,默認值爲1,實際限制約爲1,000。
請參見:http://wiki.apache.org/hadoop/HowManyMapsAndReduces
同樣重要的是要明白,你的集羣中的每個節點也有地圖的最大數量/減少可以同時執行任務。這是通過以下配置設置設置:
mapred.tasktracker.map.tasks.maximum 和 mapred.tasktracker.reduce.tasks.maximum
對於這兩個默認值爲2
因此,增加map/reduce任務的數量將被限制爲每個節點可以同時運行的任務數。這可能是您沒有看到工作執行時間發生變化的原因之一。
參見:http://hadoop.apache.org/docs/stable/mapred-default.html
的總結是: 讓Hadoop的決定地圖的數量,除非你想要更多的地圖任務。
使用mapred.tasktracker..tasks.maximum設置來控制一次可以運行多少個任務。
用於減少任務應該是介於1或2 *(mapred.tasktracker.reduce.tasks.maximum * #nodes)的數目的最大值。您還必須考慮您希望一次運行多少個map/reduce作業,以便單個作業不會佔用所有可用的縮減插槽。
對於任一設置,值爲1,000,000幾乎肯定是太高;運行這麼多java進程是不現實的。我預計這樣高的價值會被忽略。
設置了mapred.tasktracker..tasks之後。最大限度地增加您的節點能夠同時運行的任務數量,然後嘗試增加您的作業的地圖/減少任務。
您可以在job.xml文件中看到作業使用的實際任務數,以驗證您的設置。
非常感謝您的幫助.. –