以下是图解示意,这里采用最简单的wordcount来进行示例。在wordcount的输入文件中,加入一行数据,如“guaishushu”,然后修改wordcount的Mapper实现,如下:
这样修改以后,由于数据中有 “guaishushu”的字符串,并且该行一定会被落到某个map的输入中去,然后代码中当读到”guaishushu”的时候会抛出 IOException异常,所以该job在运行过程中就肯定会有一个task失败。然后,在提交作业时,将 keep.failed.task.files设置为true,并按如下程序提交,job就开始运行: 在jobtracker监控web页面上找到 task失败的机器,并确保keep.failed.task.files为true
上到该tasktracker,并找到该 task运行环境
进到该task运行环境的work目录(如果没有,可以自己创建
export jvm远程调试环境变量
运行IsolationRunner
在自己的开发机IDE环境中launch一个远程调试进程
单步跟踪示意