zoukankan      html  css  js  c++  java
  • 远程调试Hadoop

    远程调试对应用程序开发十分有用,那如何调试Hadoop源码?这里介绍如何用IDE远程调试Hadoop源码。本文以IntelliJ IDEA作为IDE,以调试Jobhistory WEB UI代码为例进行说明。
      第一步:在启动Hadoop历史服务器进程之前在终端加入以下环境配置:

    [wyp@date52 /home/wyp/hadoop]$ export HADOOP_OPTS="-Xdebug        
                       -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888"

    这里对上面的几个参数进行说明:-Xdebug 启用调试特性-Xrunjdwp 启用JDWP实现,包含若干子选项:transport=dt_socket JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。address=8888 JVM在8888端口上监听请求,这个设定为一个不冲突的端口即可。server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。suspend=y y表示启动的JVM会暂停等待,直到调试器连接上才继续执行。suspend=n,则JVM不会暂停等待。

    第二步:启动Jobhistory进程

    [wyp@date52 /home/wyp/hadoop]$ ${HODOOP_HOME}/sbin/mr-jobhistory-daemon.sh   start historyserver
    starting historyserver, logging to /home/wyp/Downloads/
                                  hadoop/logs/mapred-wyp-historyserver-master.out
    Listening for transport dt_socket at address: 8888

    上面的Listening for transport dt_socket at address: 8888表明jobhistory已经在端口为8888启动了远程调试。
      第三步:打开IntelliJ IDEA,找到hadoop-2.2.0-srchadoop-mapreduce-projecthadoop-mapreduce-clienthadoop-mapreduce-client-hssrcmainjavaorgapachehadoopmapreducev2hswebappHsController.java类,在里面设置一些断点,然后依次选择菜单 Run->Run…->Edit Configurations…->选择左上角的+号->Remote,这时右边将会出现一个Configuration页面进行远程调试配置,请在Host和Port文本框里面输入jobhistory服务所在主机的IP及刚刚的8888端口,然后选择OK。这时候IDE进入了远程调试模式,你可以和普通的调试一样调试Hadoop源码。调试其他的Hadoop源码道理和上面的一样,这里就不一一列举了。 

  • 相关阅读:
    线程的故事:我的3位母亲成就了优秀的我!
    Semaphore自白:限流器用我就对了!
    CyclicBarrier:人齐了,老司机就可以发车了!
    最新版Swagger 3升级指南和新功能体验!
    阿里巴巴Druid,轻松实现MySQL数据库连接加密!
    try-catch-finally中的4个大坑,不小心就栽进去了!
    Git 常用命令总结,将会持续更新
    oracle in 条件超长问题解决
    关于java中使用split方法末尾空值被丢弃的问题
    Ubuntu 嵌入式开发准备
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/5043274.html
Copyright © 2011-2022 走看看