在独立模式下运行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() 函数:
但是,它没有命中我在映射器或缩减器中设置的任何断点。
这里有什么问题?为什么它在独立模式下与 hadoop 一起工作而不是伪分布式模式?伪分布式的hadoop可以远程调试吗?如果不是,那么在 Eclipse 中调试 mapreduce 代码的“正确”方法是什么?
最佳答案
请参阅上面 Lorand 的评论。远程调试只能在独立模式下工作。
关于java - Eclipse 远程调试不适用于伪分布式模式下的 hadoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205967/