我正在使用hadoop 1.0.3來運行地圖縮減作業。我有一個3節點的羣集設置。問題是我在/conf/mapred-site.xml中將屬性mapred.map.tasks設置爲20,但是當我運行作業並使用網頁訪問羣集信息時,hadoop僅顯示6個地圖任務: 50030。我已經在集羣中的所有節點上編輯了上述配置文件。請幫忙。Hadoop 1.0.3 mapred.map.tasks屬性不起作用
問候, 穆赫辛
我正在使用hadoop 1.0.3來運行地圖縮減作業。我有一個3節點的羣集設置。問題是我在/conf/mapred-site.xml中將屬性mapred.map.tasks設置爲20,但是當我運行作業並使用網頁訪問羣集信息時,hadoop僅顯示6個地圖任務: 50030。我已經在集羣中的所有節點上編輯了上述配置文件。請幫忙。Hadoop 1.0.3 mapred.map.tasks屬性不起作用
問候, 穆赫辛
正如miguno所述,Hadoop僅將mapred.map.tasks的值視爲提示。這就是說,當我搞亂MapReduce的時候,我能夠通過指定最大計數來增加地圖數量。這可能不適合你,但你可以試試看。
<property>
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>60</value>
</property>
注意:該值表示地圖的總量。所以如果你想讓每個(3)節點運行20個地圖,你必須指定mapred.map。任務如下:
<property>
<name>mapred.map.tasks</name>
<value>20</value>
</property>
這就像一個魅力:)實際上,我試驗了一些更多的值,並發現我可以爲單個節點設置mapred.tasktracker.map.tasks.maximum屬性。例如,在集羣中,我們有幾個重型配置節點和一些較輕的配置節點。 @Uirri提到的上述兩個屬性都針對每個節點單獨執行。 – sp3tsnaz
及其主要輸入格式確定的地圖任務的數量。 http://wiki.apache.org/hadoop/HowManyMapsAndReduces
對於您的問題,默認情況下,任務跟蹤器運行兩個map |同時減少任務。
要更改該屬性,請在/conf/mapred-site.xml中設置屬性mapred.map.tasks.maximum
。建議採用公式(CPUS> 2)? (CPUS * 0.75):1。
這個問題似乎是Setting the number of map tasks and reduce tasks的重複。
Hadoop does not honor mapred.map.tasks
beyond considering it a hint。
看到這個information on the Hadoop wiki:
實際上控制地圖的數量是微妙的。 mapred.map.tasks參數僅僅是InputFormat對地圖數量的提示。默認的InputFormat行爲是將總字節數拆分成正確數量的片段。但是,在默認情況下,輸入文件的DFS塊大小被視爲輸入分割的上限。分割大小的下限可以通過mapred.min.split.size設置。因此,如果您希望輸入數據爲10TB並具有128MB的DFS塊,則最終將獲得82k個地圖,除非您的mapred.map.tasks更大。最終,InputFormat決定了地圖的數量。
也就是說Hadoop確實接受用戶指定的mapred.reduce.tasks
並且不會操縱它。
總之,對於給定的MapReduce作業,您無法強制執行mapred.map.tasks
,但可以強制執行mapred.reduce.tasks
。
編輯:稍微超出您的直接問題,有一種間接強制Hadoop使用更多映射器的方法。這包括適當地設置mapred.min.split.size
,dfs.block.size
和mapred.max.split.size
的組合。請注意,輸入文件的實際大小在這裏也起作用。見this answer for details,其中基本引用了湯姆懷特的Hadoop:The Definite Guide一書。
剛剛在編輯後看到了Uirri的新回覆。 :-) –
輸入數據有多大?如果輸入數據被拆分爲n個拆分,那麼Hadoop將只映射任務,而不是更多。 –
輸入分割的數量是764. – sp3tsnaz
@PraveenSripati我想設置一些並行地圖任務。我可以在我的Web控制檯中看到它有764個地圖任務。但是運行地圖任務只有6個。 – sp3tsnaz