MapReduce 远程调试 MapTask中run方法为什么不能命中?


使用Idea配置了真分布式上的远程调试,3个调试点如下,发现第1个和第2个调试点都能够命中,而MapTask中必定会运行的run方法中的调试点为啥不能命中?!
 
已邀请:

fish - Hadooper

赞同来自: Hagrid

MapTask是在集群上启动新进程进行执行的,你如果断点只打在提交端,它跟map task根本就不是一个进程,自然不会断点命中。

fish - Hadooper

赞同来自: Hagrid

调试MapTask。
1. 小数据量,用本地模式执行(mapreduce.framework.name设置为local),在提交端就可以打断点命中。本地调好了再上集群。
2. 集群模式,打log。
3. 集群模式,修改配置mapreduce.map.java.opts,添加上jdwp相关的监听端口项,任务自动之后,找到任务在哪个nodemanager启动的,远程attach上去。千万注意,如果suspend=y,所有map任务启动之后都会停住等待远端attach,任务map数最好不要太多,要不然挨个attach非常费劲。
请问mapreduce.framework.name设置为local使用 -D的方式不行吗?如何设置?@fish

fish - Hadooper

你是否可以先用命令行方式试试?
正确的本地调试方式:首先你的HDFS和YARN要启动,然后命令行如下图,之后再Attach上去才行(注意你要事先设置jdwp:如何设置?http://wenda.chinahadoop.cn/question/2965)。

要回复问题请先登录注册