2013-07-24 28 views
0

我使用的Eclipse運行在僞分佈式模式的Hadoop的窗口。我需要將一些選項[jvm related]傳遞給reducer。我曾嘗試使用:傳遞命令行選項中的Hadoop MapReduce的減速機在Eclipse

<property> 
    <name>mapred.reduce.child.java.opts</name> 
    <value>-Dtca.TCA_PROPERTIES=C:\Users\uagrawal\workspace\TCAenv -DMDAPI=C:\Users\uagrawal\workspace\mdapi</value> 
    </property> 

但我不成功。早些時候,當我用當地的獨立模式在那裏我只需要表明,在運行對話框中,這些JVM選項和他們的工作完全正常。但是在僞分佈式模式下,即使在運行對話框中提示這些參數不起作用。

這是我在僞分佈式模式出現錯誤:

MDV_DATE not found.... 
java.lang.ClassCastException: com.itginc.tca.config.Config cannot be cast to com.itginc.tca.config.TcaConfig 

上述這些錯誤是因爲程序沒有得到mdapi和tcaenv文件。

+0

難道是possbile使用分佈式緩存?我不知道它將如何提供幫助。如果您有任何想法,請告訴我。 – udag

回答

0

,而不是添加的在mapred.xml 「mapred.reduce.child.java.opts」 的值設定爲 「-Dtca.TCA_PROPERTIES = C:\用戶\ uagrawal \工作空間\ TCAenv -DMDAPI = C:\用戶\ uagrawal \工作空間\ mdapi」 我改變「mapred.child.java.opts」改爲「-Dtca.TCA_PROPERTIES = C:\ Users \ uagrawal \ workspace \ TCAenv -DMDAPI = C:\ Users \ uagrawal \ workspace \ mdapi」。

我認爲這樣做的原因是因爲在僞分佈模式下,任務跟蹤器的每個子進程都有自己的jvm,並且最好設置子jvm的屬性。

0

傳給你需要使用-D name=value命令行參數。例如 要配置臨時目錄中的所有任務,然後可以使用下面的命令

hadoop jar JAR.jar mainClass -D mapreduce.task.tmp.dir="/path/to/temp/dir" 

不要忘了把-Dname=value 之間的空間,然後你就可以配置期運用GenericOptionsParser

+0

感謝@twid。但我想我解決了我的問題。我用 'code' conf.set(「mapred.child.java.opts」,「 - Dtca.TCA_PROPERTIES = C:\\ Users \\ uagrawal \\ workspace \\ TCAenv -DMDAPI = C:\\ Users \\ uagrawal \\工作區\\ mdapi「); '代碼' 來解決問題。 – udag

+0

沒問題..... – twid