2012-05-04 47 views
0

如果我增加了mappers的數量並減少了reducers的數量,那麼在執行時任何作業的性能(增加/減少)是否有差異?如何根據用於提高性能的實例數量增加hadoop中的映射器和reducers?

另外我想問一下如何設置mappers和reducer的數量?我從來沒有玩過這個設置這就是爲什麼我不知道這個。我知道hadoop,但我有代碼,因爲我使用Hive很多。

此外,如果我想增加mappers和reducer的數量,那麼如何設置它,並確定我設置它的值。它取決於實例的數量(例如10)?

請回復我我想試試這個並檢查性能。 謝謝。

回答

3

更改mappers的數量 - 是純粹的優化,應該不會影響結果。您應該設置數字以充分利用您的羣集(如果它是專用的)。嘗試每個節點的映射器數量等於內核數量。查看CPU利用率,並增加數量,直到獲得幾乎完全的CPU利用率,或者系統開始交換。如果你沒有足夠的內存,可能會發生你需要更少的映射器然後核心。
減速機數量影響結果,因此,如果您需要特定數量的減速機(如1) - 將其設置爲
如果您可以處理任意數量減速機的結果 - 執行與Mappers相同的優化。
理論上你可以在調整過程中成爲IO界限 - 在調整任務數量時也要注意這一點。儘管Mappers/Reducer計數增加,但您可以通過較低的CPU利用率來進行識別。

+0

感謝大衛的回答。但是我想知道如何設置mapper和reducer(設置它的命令是什麼?)。 –

+0

最簡單的方法是設置以下屬性:Mapred-site.xml中的mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum –

4

您可以根據塊大小和分割大小增加映射器的數量。一個最簡單的方法是減少分割尺寸,如下圖所示:

Configuration conf= new Cofiguration(); 
//set the value that increases your number of splits. 
conf.set("mapred.max.split.size", "1020"); 
Job job = new Job(conf, "My job name"); 
0

我已經通過修改mapred.max.split.size試圖從@Animesh拉吉傑哈的建議,並得到了顯着的性能提升。

0

我正在使用Hadoop 2.2,不知道如何設置最大輸入分割大小 我想減小該值,以創造更多的映射器 我試圖更新紗的site.xml,並且但它不工作

事實上,Hadoop的2.2 /紗不走沒有的以下設置

<property> 
<name>mapreduce.input.fileinputformat.split.minsize</name> 
<value>1</value> 
</property> 
<property> 
<name>mapreduce.input.fileinputformat.split.maxsiz e</name> 
<value>16777216</value> 
</property> 

<property> 
<name>mapred.min.split.size</name> 
<value>1</value> 
</property> 
<property> 
<name>mapred.max.split.size</name> 
<value>16777216</value> 
</property> 

最好

相關問題