我使用eclipse在windows中以伪分布式模式运行hadoop。我需要将一些选项[jvm相关]传递给reducer。我试过使用:
<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>
但我没有成功。早些时候,当我使用本地独立模式时,我只需要在run对话框中建议这些jvm选项,它们工作得非常好。但在伪分布式模式下,即使在“运行”对话框中建议这些参数也不起作用。
这是我在伪分布式模式下遇到的错误:
MDV_DATE not found....
java.lang.ClassCastException: com.itginc.tca.config.Config cannot be cast to com.itginc.tca.config.TcaConfig
以上这些错误是因为程序没有获得mdapi和tcaenv文件。
2条答案
按热度按时间ygya80vv1#
要传递命令行参数,您需要使用
-D name=value
. 例如,要为所有任务配置临时目录,则可以使用以下命令别忘了在中间留出空间
-D
以及name=value
然后可以使用GenericOptions Parser进行配置l3zydbqr2#
我没有将mapred.xml中“mapred.reduce.child.java.opts”的值添加到“-dtca.tca\u properties=c:\users\uagrawal\workspace\tcaev-dmdapi=c:\users\uagrawal\workspace\mdapi”,而是将“mapred.child.java.opts”的值更改为“-dtca.tca\u properties=c:\users\uagrawal\workspace\tcaev-dmdapi=c:\users\uagrawal\workspace\mdapi”。
我认为这样做的原因是,在伪分布式模式下,任务跟踪器的每个子进程都有自己的jvm,最好设置子jvm的属性。