2014-04-28 107 views
-1

我有4個節點,我正在運行一個mapreduce示例項目以查看是否正在所有4個節點之間分配工作。我運行了多次項目並注意到,mapper任務在所有4個節點之間被分割,但reducer任務只能由一個節點完成。這是假設它是如何還是減速器任務假設在所有4個節點之間分裂。Hadoop Map/Reduce工作分配

謝謝

+0

一個非常類似的問題,你剛纔問你可以在這裏找到http://stackoverflow.com/questions/6885441/setting-the-number-of-map-tasks-and-reduce-tasks – Sudarshan

回答

0

映射器的分佈取決於映射器將運行在數據的這些塊。 Framework默認嘗試將任務分配給具有存儲數據塊的節點。這將阻止數據的網絡傳輸。

對於減速器又取決於沒有。你的工作需要的減速器。如果你的工作只使用一個reducer,它可能被分配給任何節點。

同樣影響這是推測執行。如果打開,則會導致多個映射任務/減少任務實例在不同節點上啓動,而基於完成百分比的作業跟蹤器將決定哪一個會通過並且其他實例將被終止。

0

讓我們說你224 MB的文件。當添加文件到基礎上,64 MB的缺省塊大小HDFS,文件被分成4個塊[BLK1 = 64MBLK2 = 64MBLK3 = 64Mblk4 = 32M]。讓我們假設BLK1在node1上表示爲BLK1 :: 節點1BLK2 :: 節點2BLK3節點3BLK4節點4。現在當你運行MR時,Map需要訪問輸入文件。所以MR FWK創建4個映射器並在每個節點上執行。 Venkat表示它依賴於爲您的工作配置的減速器的數量。可以使用Hadoop org.apache.hadoop.mapreduce.Job setNumReduceTasks(int tasks)API配置reducer。