2015-04-22 91 views
0

我以僞分佈式模式在單個節點集羣上使用hadoop。我的系統有16個內核,但hadoop一次只運行一個映射或減少任務,因此沒有充分利用所有內核。我將conf/mapred-site.xml更改爲以下內容,但仍然無效。誰能告訴我什麼是問題及其解決方案。在僞分佈式hadoop中並行運行的Mapreduce任務

<configuration> 

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

    <property> 
     <name>mapred.tasktracker.map.tasks.maximum</name> 
     <value>4</value> 
    </property> 

    <property> 
     <name>mapred.tasktracker.reduce.tasks.maximum</name> 
     <value>4</value> 
    </property> 

    <property> 
     <name>mapred.map.tasks</name> 
     <value>4</value> 
    </property> 

    <property> 
     <name>mapred.reduce.tasks</name> 
     <value>4</value> 
    </property> 

</configuration> 
+0

Hadoop的版本?更改後是否重新啓動JobTracker? –

+0

Hadoop版本是2.5.2。包中的所有內容都包括停止並重新啓動hadoop的所有守護進程,但仍然無法正常工作。 – MetallicPriest

回答

0

如果您正在分析的文件大小小於塊大小(dfs.blocksize在HDFS-default.xml中),那麼該文件不是splited只有一個地圖任務運行,儘管映射器的數量的你已配置。嘗試分析更大的文件或減小塊大小;將創建幾個分割,以及相同數量的映射器。

0

可以肯定的是,hadoop爲每個輸入分割分派一個映射器。默認情況下,輸入分割大小等於默認64MB的dfs塊大小。

我相信作業所需的輸入文件的大小應該是< =輸入拆分大小。這可能是您看到爲該作業準備的一個映射器的原因。

要讓多個映射器處理文件,請將較小的值分配給作業配置中的mapreduce.input.fileinputformat.split.minsize屬性。

mapred.map.tasks屬性只是輸入格式的提示,不需要應用。 mapred.tasktracker.map.tasks.maximum屬性僅用於提及#mappers的上限。

決定減速機的數量需要大量的信息。以下鏈接將幫助您http://wiki.apache.org/hadoop/HowManyMapsAndReduces