2014-07-16 34 views
1

我已經通過了很多關於stackoverflow的博客和apache wiki來了解映射器在Hadoop中的設置方式。我也經歷了[hadoop - how total mappers are determined [此]帖子。 有人說它基於InputFormat,有些帖子說它是基於輸入文件ID分成的塊數。設置所需號碼的映射器

一些我對默認設置感到困惑。

當我運行一個wordcount示例時,我看到映射器低至2.設置中發生了什麼?也是這篇文章[http://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/QuasiMonteCarlo.java] [示例程序]。在這裏,他們根據用戶輸入設置了映射器。如何手動執行此設置?

我真的很感謝一些幫助和理解mappers如何工作。

在此先感謝

回答

0

使用Java系統屬性mapred.min.split.sizemapred.max.split.size引導Hadoop的使用要用作分割大小。這並不總是奏效 - 特別是當您的數據是不可拆分的壓縮格式時(例如gz,但bzip2是可拆分的)。

所以,如果你想要更多的映射器,使用更小的分割大小。簡單!

(根據要求更新)現在,這不適用於很多小文件,特別是最終會得到比您想要的更多的映射器。對於這種情況使用CombineFileInputFormat ...在燙傷這個SO解釋:Create Scalding Source like TextLine that combines multiple files into single mappers

+0

你好@Sam:感謝您的回答。我明白基於mapred.min.split.size決定映射器的數量,但我的輸入大小非常小,以至於這種方法並沒有真正的幫助。我找到了一個方法,可以根據InputFormat來決定,在哪裏可以更靈活地設置它[示例](http://www.philippeadjiman.com/blog/2009/12/20/hadoop-tutorial-series-issue -2-工具入門 - 用定製的分區/)。謝謝 – user3560220

+0

@ user3560220好吧,我c,我已經更新了答案。 – samthebest

+0

謝謝samthebest – user3560220