在我的Java代碼中,我想刪除這些任務,因爲我認爲他們浪費了太多時間在我的程序中。 我嘗試使用XML文件,但它不是工作:如何在hadoop-1.0.4中禁用作業設置和作業清理任務
<property>
<name>mapreduce.job.committer.setup.cleanup.needed</name>
<value>false</value>
請幫助我知道該怎麼做,與什麼辦法?我認爲2個任務是沒有必要的。這樣對嗎?? 謝謝大家!
在我的Java代碼中,我想刪除這些任務,因爲我認爲他們浪費了太多時間在我的程序中。 我嘗試使用XML文件,但它不是工作:如何在hadoop-1.0.4中禁用作業設置和作業清理任務
<property>
<name>mapreduce.job.committer.setup.cleanup.needed</name>
<value>false</value>
請幫助我知道該怎麼做,與什麼辦法?我認爲2個任務是沒有必要的。這樣對嗎?? 謝謝大家!
我相信你沒有在你的mapred-config.xml中正確使用/設置屬性。 你可以試試以下兩兩件事:
1) 覆蓋OutputCommitter
類和在setupJob
和cleanupJob
方法無能爲力。
public static class NoSetupCleanupOutputCommitter extends OutputCommitter {
@Override
public void setupJob(JobContext jobContext) { }
@Override
public void cleanupJob(JobContext jobContext) { }
}
,然後在run()
此設置,就像如下:
conf.setOutputCommitter(NoSetupCleanupOutputCommitter.class);
2)你可以嘗試設置在Java代碼中的配置權如下:
//either one of the following configs should do according to the hadoop's version:
conf.setBoolean("mapred.committer.job.setup.cleanup.needed", false);
conf.setBoolean("mapreduce.job.committer.task.cleanup.needed", false);
嗨阿馬爾,感謝您的回覆 我曾嘗試過您的解決方案,但我沒有工作,taks job_setup和job_cleanup也被jobtracker添加了,所以它浪費了我的程序運行時間。我的hadoop版本是1.0.4。它沒有conf.setOutputCommitter()。 你有其他建議嗎? – user2239952
你把你的設置和清理方法放在哪裏?默認情況下,這些方法在Mapper和Reducer類中沒有內容,所以無論是「浪費時間」,都必須是你寫的東西。如果您希望能夠禁用外部編寫的任何內容,則可以在安裝和清理方法中進行自己的配置檢查。 – Quetzalcoatl
您是否嘗試過將final設置爲true,以便該值不會在其他地方被覆蓋? ' mapreduce.job.committer.setup.cleanup.needed 假 真正 ' 謹防https://issues.apache.org/jira/browse/MAPREDUCE-2129的,雖然。 –
sufinawaz