将命令行参数传递给jvm(java)mapper任务
问题描述:
我想调试我的映射器的某些部分,我需要将一些命令行参数传递给启动映射器的jvm(java)进程。有什么不同的方式来做到这一点?将命令行参数传递给jvm(java)mapper任务
我想出了一种方法来改变MapTaskRunner.java,但我想避免编译整个hadoop包。应该有一些简单的方法来使用配置文件将额外的命令行参数传递给jvm映射器进程。
答
我猜你正在寻找在mapred-config.xml中的配置如下:
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx4096m -XX:+UseConcMarkSweepGC</value>
</property>
在值部分,你可以使用-D
设置你的论点。
或者你可以通过设置在终端的HADOOP_OPTS
:
export HADOOP_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5000"
有关本地调试Hadoop作业的详细信息,请参阅here。
我不明白你怎么能用另一个参数来实现调试,你可以举个例子。 – Alper 2013-03-08 07:46:29
好吧,jprofiler要求我添加一些命令行参数,以便通过调试器进行调试。 – 0xhacker 2013-03-08 12:06:30