由于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
4、mapreduce任务会在map阶段时进行等待(终端的显示是一直停留在0%),这时就可以利用eclipse或idea的remote debug进行远程调试,连接上后,map任务就往下执行,也就可以调试了。
map任务完成后,到reduce阶段时又会进入等待,还需要进行一次remote debug.