close
明明我的hadoop cluster 有三個node,但為什麼每次跑MapReduce時都只有跑1個或2個map?
(Map階段是將job分散給node的最重要階段,reduce做map處理完後的總合,依撰寫的程式而異,reduce甚至只做輸出的動作)
如下圖所示:
參考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去跑
分成三個map
而三個map又分別在三個node上run
全站熱搜