MapReduce二次开发远程调试
问题
MapReduce二次开发过程中如何远程调试业务代码?
回答
MapReduce开发调试采用的原理是Java的远程调试机制,在Map/Reduce任务启动时,添加Java远程调试命令。
- 首先理解两个参数:“mapreduce.map.java.opts”和“mapreduce.reduce.java.opts”,这两个参数为客户端参数,分别指定了Map/Reduce任务对应的JVM启动参数。
修改客户端“客户端安装路径/Yarn/config/mapred-site.xml”配置文件中“mapreduce.map.java.opts”和“mapreduce.reduce.java.opts”参数,分别加入调试命令“-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000”,保存文件。
- MapReduce为分布式计算框架,Map/Reduce任务启动所在的节点存在不确定性,建议将集群内NodeManager实例只保留一个运行,其他全部停止,以保证任务一定会在这个唯一运行的NodeManager节点上启动。
- 在客户端提交MapReduce任务,在Map/Reduce任务启动时会挂起并监测8000端口,等待远程调试。
- 在IDE上,选择MapReduce任务的实现类,通过配置远程调试信息,执行Debug。
若使用IDE直接提交MapReduce任务,则IDE即成为客户端的角色,参考1修改二次开发工程中的“mapred-site.xml”即可。