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


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

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非常费劲。

Hagrid

赞同来自:

请问mapreduce.framework.name设置为local使用 -D的方式不行吗?如何设置?@fish

fish - Hadooper

赞同来自:

你是否可以先用命令行方式试试?

Hagrid

赞同来自:

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

要回复问题请先登录注册