【问题标题】:Hadoop Command Line Paramers not Passed to Java Remote DebuggerHadoop 命令行参数未传递给 Java 远程调试器
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多