2011-12-02 46 views
8

我在4核筆記本電腦上以僞分佈式模式運行任務。我如何確保所有內核都得到有效使用。 目前我的作業跟蹤器顯示一次只能執行一個作業。這是否意味着只使用一個核心?Hadoop僞分佈式模式下所有內核的完全利用率

以下是我的配置文件。

CONF /芯-site.xml中:

<configuration> 
    <property> 
     <name>fs.default.name</name> 
     <value>hdfs://localhost:9000</value> 
    </property> 
</configuration> 

CONF/HDFS-site.xml中:

<configuration> 
    <property> 
     <name>dfs.replication</name> 
     <value>1</value> 
    </property> 
</configuration> 

CONF/mapred-site.xml中:

<configuration> 
    <property> 
     <name>mapred.job.tracker</name> 
     <value>localhost:9001</value> 
    </property> 

</configuration> 

EDIT : 根據答案,我需要在mapred-site.xml中添加以下屬性

<property> 
    <name>mapred.map.tasks</name> 
    <value>4</value> 
    </property> 
    <property> 
    <name>mapred.reduce.tasks</name> 
    <value>4</value> 
    </property> 
+0

mapred.map.tasks和mapred.reduce.tasks不控制每個節點的map/reduce任務數量。請在選擇答案之前嘗試確認。 –

+0

@Praveen這是正確的,但由於他有1個節點,他至少需要建議它也使用更多的映射器,而不是僅提高每個跟蹤器的最大值。 –

+0

@Nemo除了在mapred-site.xml中添加4的mapred。(map | reduce).tasks值之外,是否更改了mapreduce.tasktracker。(map | reduce).tasks.maximum的值以完全利用所有核心? – AST

回答

3

mapred.map.tasks and mapred.reduce.tasks將控制這一點,並且(我相信)會設置在mapred-site.xml。但是,這將它們確定爲羣集範圍的默認值;更通常的情況下,你可以在每個作業的基礎上進行配置。您可以在java命令行上設置相同的參數-D

+0

對於4核心系統,有多少地圖和減少任務是最優的? – Nemo

+0

4可能會是一個好的開始 - 儘管您可能很快會在一臺機器上綁定I/O而不是CPU綁定。 –

+0

我認爲這是新問題。 http://stackoverflow.com/questions/8357630/error-when-setting-mapred-map-tasks-in-pseudo-distributed-mode – Nemo

6

mapreduce.tasktracker.map.tasks.maximummapreduce.tasktracker.reduce.tasks.maximum屬性控制每個節點的映射數量和減少任務。對於4核心處理器,從2/2開始,如果需要,從那裏更改值。一個插槽是一個map或reduce插槽,將值設置爲4/4將使Hadoop框架同時啓動4個map和4個reduce任務。總共8個map和reduce任務一次在一個節點上運行。

mapred.map.tasksmapred.reduce.tasks屬性控制作業的map/reduce任務總數,而不是每個節點的任務數量。此外,mapred.map.tasks是Hadoop框架的暗示,作業的總映射任務數等於InputSplits的數量。

相關問題