明明我的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
文章標籤
全站熱搜

http://r97846001.blog.ntu.edu.tw/2015/01/26/hadoop-reduce%E6%9C%83%E7%AD%89map-task%E7%B5%90%E6%9D%9F%E6%89%8D%E9%96%8B%E5%A7%8B%E8%B7%91%E5%97%8E%EF%BC%9F/