我从MRAppMaster.java代码开始。我想调试一下,看看yarn应用程序的原理。
我将编译好的hadoop代码导入到我的Eclipse中。
我在我的本地Linux上运行hadoop。
4504 ResourceManager
4066 DataNode
4761 NodeManager
5068 JobHistoryServer
4357 SecondaryNameNode
3833 NameNode
5127 Jps
在hadoop-env.sh: HADOOP_OPTS="$HADOOP_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9000"
然后我运行:
bin/hadoop jar path/to/hadoop-mapreduce-examples-2.2.0.jar wordcount /wordcount /output
然后在MRAppMaster.java和RunJar.java中设置断点。然后在Eclipse中开始调试。
它只停在:
Thread [main] (Suspended (breakpoint at line 342 in JobSubmitter))
JobSubmitter.submitJobInternal(Job, Cluster) line: 342
...
RunJar.main(String[]) line: 212
如何调试到MRAppMaster.java?
对你来说已经很晚了,但是我也被同样的问题困住了,并找到了解决方案,所以把它贴在这里。首先,如果你正在寻找调试MR作业,这里有一个解释它的帖子。如果你正在寻找调试TEZ作业,那么你应该在TEZ -site.xml
中添加以下内容<property>
<name>tez.am.launch.cmd-opts</name>
<value>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7070</value>
</property>