【发布时间】:2013-02-01 16:32:03
【问题描述】:
我已经安装了 hadoop 1.0.4。我通过添加以下内容修改了 /usr/bin/hadoop 文件:
HADOOP_DEBUG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5000"
elif [ "$COMMAND" = "jar" ] ;那么
CLASS=org.apache.hadoop.util.RunJar
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS"
elif [ "$COMMAND" = "jar-debug" ] ;那么
CLASS=org.apache.hadoop.util.RunJar
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_CLIENT_OPTS $HADOOP_DEBUG"
COMMAND="jar"
这样我可以运行“hadoop jar SomeJar.jar SomeClass”正常启动或运行“hadoop jar-debug SomeJar.jar SomeClass”以调试模式启动。这有效,除非我想将命令行参数传递到我的类中(例如在 WordCount 示例中)。例如运行:
"hadoop jar-debug WordCount.jar WordCount InputDir OutputDir"
在主类的第一行有一个断点表明 String[] args 是一个空字符串(这显然会导致程序稍后失败)。如果我使用普通的 jar 命令运行它,它可以正常工作(显然命令行参数可以使用普通的 jar 很好地传递)。
有人知道这里发生了什么吗?我被严重卡住了。提前致谢。
【问题讨论】:
-
只是一个更新:在实际集群上运行调试时,命令行参数可以正常传递。它们只是在伪分布式模式下运行时没有传入......奇怪
标签: java hadoop command-line-arguments remote-debugging