0

我已经安装了 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"

命令=“罐子”

这样我可以运行“hadoop jar SomeJar.jar SomeClass”正常启动或运行“hadoop jar-debug SomeJar.jar SomeClass”以调试模式启动。这有效,除非我想将命令行参数传递给我的类(例如在 WordCount 示例中)。例如运行:

“hadoop jar-debug WordCount.jar WordCount InputDir OutputDir”

在主类的第一行有一个断点表明 String[] args 是一个空字符串(这显然会导致程序稍后失败)。如果我使用普通的 jar 命令运行它,它可以正常工作(很明显,命令行参数可以使用普通的 jar 很好地传入)。

有人知道这里发生了什么吗?我被严重卡住了。提前致谢。

4

1 回答 1

0

为将来遇到此问题的任何人更新:

如果启动 java 远程调试器侦听错误的 IP 地址(IE 侦听远程名称节点而不是 localhost),JRD 仍会启动,但不会传入命令行参数。

于 2013-02-08T01:47:55.983 回答