1. 选定一台调试机器,修改mapred-site.xml文件,添加如下配置:
<property> <name>mapred.child.java.opts</name> <value>-agentlib:jdwp=transport=dt_socket,address=12000,server=y,suspend=y</value> </property> <property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>1</value> <description>tasktracker的map任务上限</description> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>1</value> <description>tasktracker的reduce任务上限</description> </property> <property> <name>mapred.task.timeout</name> <value>100000000</value> </property>
2. 关闭所有的tasktracker,只保留上面配置的一台需要调试的tasktracker
or 在一个TaskTracker上,只能启动一个Map Task或一个Reduce Task,否则启动时会有端口冲突。因此要修改所有TaskTracker上的conf/hadoop-site.xml中的配置项:
<property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>1</value> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>1</value> </property>
3. 启动Mapreduce job
4.远程调试
a) 右键hadoop src项目,右键“Debug As”,
b) 选择“Debug Configurations”,
c) 选择“Remote Java Application”,
d) 添加一个新的测试,
e) 输入远程host ip和监听端口,上例为12000,然后点击“Debug”按钮。
此时应该连接到远程tasktracker child进程,并进入断点位置,可以单步调试了。
浙公网安备 33010602011771号