远程Hadoop调试——mapreduce函数调试篇

上一次记录了如何调试NN,JT,DT,JT,这次记录为调试mapreduce函数,和前几个应用不同,mapreduce为Child进程,不能直接通过bin/hadoop文件中开启远程调试端口,具体操作如下:

1. 选定一台调试机器,修改mapred-site.xml文件,添加如下配置:

  <property>
    <name>mapred.child.java.opts</name>
    <value>-agentlib:jdwp=transport=dt_socket,address=8883,server=y,suspend=y</value>
  </property>

2. 关闭所有的tasktracker,只保留上面配置的一台需要调试的tasktracker

3. 启动Mapreduce job

3. 右键hadoop src项目,右键“Debug As”,选择“Debug Configurations”,选择“Remote Java Application”,添加一个新的测试,输入远程host ip和监听端口,上例为8883,然后点击“Debug”按钮。此时应该连接到远程tasktracker child进程,并进入断点位置,可以单步调试了。

扫描二维码关注公众号,回复: 732644 查看本文章

我的YY:在调试过程发现开启所有tasktracker,此时连接到tasktracker一下然后就断开,所以需要关闭其他tasktracker,只保留一台。

    按照上面的配置,如果抛出一个连接错误异常,再连接一下就好了。

-- heipark

猜你喜欢

转载自heipark.iteye.com/blog/1439698