java—将命令行选项传递给eclipse中hadoop mapreduce中的reducer

c8ib6hqw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(384)

我使用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文件。

ygya80vv

ygya80vv1#

要传递命令行参数,您需要使用 -D name=value . 例如,要为所有任务配置临时目录,则可以使用以下命令

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

别忘了在中间留出空间 -D 以及 name=value 然后可以使用GenericOptions Parser进行配置

l3zydbqr

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的属性。

相关问题