close

明明我的hadoop cluster 有三個node,但為什麼每次跑MapReduce時都只有跑1個或2個map?

(Map階段是將job分散給node的最重要階段,reduce做map處理完後的總合,依撰寫的程式而異,reduce甚至只做輸出的動作)

如下圖所示:

hadoop2.JPG

 

hadoop1.JPG

參考hadoop設定檔的預設值:

<property>
  <name>mapred.map.tasks</name>
  <value>2</value>
  <description> define mapred.map tasks to be number of slave hosts   </description>
</property>

以及說明

The default number of map tasks per job. Typically set
to a prime several times greater than number of available hosts.
Ignored when mapred.job.tracker is "local".
一般會設定結點的倍數,若jobtracker是設定成localhost的話,則是會忽略掉mapred.map.tasks的設定值,平常不做設定則是2

若要改掉預設值請編輯HADOOP_HOME/conf/mapred-site.xml

<property>
  <name>mapred.map.tasks</name>
  <value>3</value>
  <description> define mapred.map tasks to be number of slave hosts   </description>
</property>

加到

<configuration></configuration>

標籤中就OK了,範例中的3是因為我有3個node,當然我也可以設定成6或是9 這些3的倍數

 

之後我的job就會分成3個map去跑

hadoop3.JPG

分成三個map

hadoop4.JPG

而三個map又分別在三個node上run

hadoop5.JPG hadoop6.JPG hadoop7.JPG

 

arrow
arrow
    全站熱搜

    amon0626 發表在 痞客邦 留言(1) 人氣()