2014-10-19 164 views
0

我正在閱讀一本書(專業Hadoop解決方案),可以通過指定作業配置mapreduce.job.jvm.numtasks來啓用JVM重用。我的問題是我們是否需要在Driver類中設置它?我在哪裏設置配置mapreduce.job.jvm.numtasks?

我試過在mapreduce.Job對象中尋找這個配置,我沒有找到它。這個API可以在我使用的Hadoop版本中的其他地方替換嗎?或者我不是在正確的地方看?我正在使用Hadoop版本1.0.3。

我也試着尋找老房產mapred.job.reuse.jvm.num.tasks,我不能。

謝謝!

回答

0

你可以在mapred-site.xml中定義它:

<property> 
    <name>mapred.job.reuse.jvm.num.tasks</name> 
    <value>-1</value> 
</property> 

使用它時,你有對的一定時間段較短的運行任務。

1

您的源代碼是指Hadoop 2.x(YARN)的較新Hadoop配置API。在向YARN轉移的過程中,許多配置名稱已被修改。對於相關的Hadoop版本(在這種情況下,亞馬遜的Elastic MapReduce採用版本2.4.0),對the offical site的更改進行了記錄。

它明確提到舊配置名稱mapred.job.reuse.jvm.num.tasks已被新名稱mapreduce.job.jvm.numtasks所取代。

而且對MapReduce的default configuration的文件說,這爲mapreduce.job.jvm.numtasks

多少任務,每個JVM上運行。如果設置爲-1,則沒有限制。

例如,可以在GrepCode上找到Hadoop 1.2.1(兼容配置API到1.0.3)的默認配置。

關於你的問題,在哪裏設置這個屬性。它或者可以設置

  • ${HADOOP_CONF_DIR}/mapred-site.xml整個集羣,
  • 或您指定它在你的工作(或JobContext)的配置,只要它沒有被聲明爲集羣內最終job.getConfiguration().set("mapred.job.reuse.jvm.num.tasks","-1");