`
heipark
  • 浏览: 2094934 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

远程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进程,并进入断点位置,可以单步调试了。

 

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

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

 

-- heipark

 

 

分享到:
评论
7 楼 爱岩修 2014-04-03  
zk279444107 写道
zk279444107 写道
你好,通过按你的方法配置,但是debug不了。我是用eclipse+本机伪分布式,通过cygwin模拟的环境。
监听tasktracker是没有问题的:
localhost: Listening for transport dt_socket at address: 6666
但mapred.child.java.opts的端口就是连接不上,我首先是想是不是要任务运行,端口才会开启,但任务都运行完毕了还是连接不上。
我的其他配置:
  <property>
    <name>mapred.job.reuse.jvm.num.tasks</name>
    <value>-1</value>
  </property>
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.tasktracker.reduce.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.task.timeout</name>
  <value>600000</value>
</property> 


问题已经解决,关键在于eclipse插件的配置,同时谢谢博主分享经验心得。



是怎么解决的?mapred-site.xml用的这个配置文件吗?eclipse的插件有什么配置?
6 楼 爱岩修 2014-04-03  
zk279444107 写道
zk279444107 写道
你好,通过按你的方法配置,但是debug不了。我是用eclipse+本机伪分布式,通过cygwin模拟的环境。
监听tasktracker是没有问题的:
localhost: Listening for transport dt_socket at address: 6666
但mapred.child.java.opts的端口就是连接不上,我首先是想是不是要任务运行,端口才会开启,但任务都运行完毕了还是连接不上。
我的其他配置:
  <property>
    <name>mapred.job.reuse.jvm.num.tasks</name>
    <value>-1</value>
  </property>
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.tasktracker.reduce.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.task.timeout</name>
  <value>600000</value>
</property> 



是怎么解决的?mapred-site.xml用的这个配置文件吗?eclipse的插件有什么配置?
问题已经解决,关键在于eclipse插件的配置,同时谢谢博主分享经验心得。

5 楼 heipark 2013-05-08  
coobery 写道
"上一次记录了如何调试NN,JT,DT,JT"
哪篇博文记录了?


在这里:
http://heipark.iteye.com/blog/1393553
4 楼 coobery 2013-05-08  
"上一次记录了如何调试NN,JT,DT,JT"
哪篇博文记录了?
3 楼 heipark 2012-03-22  
zk279444107 写道
zk279444107 写道
你好,通过按你的方法配置,但是debug不了。我是用eclipse+本机伪分布式,通过cygwin模拟的环境。
监听tasktracker是没有问题的:
localhost: Listening for transport dt_socket at address: 6666
但mapred.child.java.opts的端口就是连接不上,我首先是想是不是要任务运行,端口才会开启,但任务都运行完毕了还是连接不上。
我的其他配置:
  <property>
    <name>mapred.job.reuse.jvm.num.tasks</name>
    <value>-1</value>
  </property>
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.tasktracker.reduce.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.task.timeout</name>
  <value>600000</value>
</property> 


问题已经解决,关键在于eclipse插件的配置,同时谢谢博主分享经验心得。


恭喜!
2 楼 zk279444107 2012-03-22  
zk279444107 写道
你好,通过按你的方法配置,但是debug不了。我是用eclipse+本机伪分布式,通过cygwin模拟的环境。
监听tasktracker是没有问题的:
localhost: Listening for transport dt_socket at address: 6666
但mapred.child.java.opts的端口就是连接不上,我首先是想是不是要任务运行,端口才会开启,但任务都运行完毕了还是连接不上。
我的其他配置:
  <property>
    <name>mapred.job.reuse.jvm.num.tasks</name>
    <value>-1</value>
  </property>
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.tasktracker.reduce.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.task.timeout</name>
  <value>600000</value>
</property> 


问题已经解决,关键在于eclipse插件的配置,同时谢谢博主分享经验心得。
1 楼 zk279444107 2012-03-22  
你好,通过按你的方法配置,但是debug不了。我是用eclipse+本机伪分布式,通过cygwin模拟的环境。
监听tasktracker是没有问题的:
localhost: Listening for transport dt_socket at address: 6666
但mapred.child.java.opts的端口就是连接不上,我首先是想是不是要任务运行,端口才会开启,但任务都运行完毕了还是连接不上。
我的其他配置:
  <property>
    <name>mapred.job.reuse.jvm.num.tasks</name>
    <value>-1</value>
  </property>
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.tasktracker.reduce.tasks.maximum</name>
  <value>1</value>
</property>
<property>
  <name>mapred.task.timeout</name>
  <value>600000</value>
</property> 

相关推荐

Global site tag (gtag.js) - Google Analytics