eclipse远程调试不能在伪分布式模式下与hadoop一起工作

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

在独立模式下运行hadoop时,我对eclipse的远程调试没有问题。但是,当我在伪分布式模式下运行hadoop时,它不起作用。下面是我如何尝试在伪分布式模式下使用hadoop进行eclipse远程调试:
我在hadoop脚本中添加了一行代码,如下所示:


# added this line to enable remote debugging

HADOOP_OPTS="$HADOOP_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5000"

# run it

exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"

然后我创建一个远程调试配置,如下所示:

我从命令行运行作业,它会显示应该执行的操作:

Listening for transport dt_socket at address: 5000

然后我返回eclipse并运行调试配置。它会像应该的那样进入main()函数:

但是,它不会命中我在Map器或reducer中设置的任何断点。
有什么问题吗?为什么它在独立模式下使用hadoop,而不是伪分布式模式?是否可以用hadoop在伪分布式模式下进行远程调试?如果不是,在eclipse中调试mapreduce代码的“正确”方法是什么?

khbbv19g

khbbv19g1#

您可以指定:

<property>
  <name>mapred.map.child.java.opts</name>
  <value>-Xdebug -Xrunjdwp:transport=dt_socket,address=5001,server=y,suspend=y</value>
</property>

它将在调试模式下启动map任务。另请参见使用eclipse调试多个hadoop JVM

eqfvzcg8

eqfvzcg82#

参见上面罗兰的评论。远程调试只能在独立模式下工作。

相关问题