Hbase 源码调试:Remote debug 模式

不愤不启,不悱不发;举一隅不以三隅反,则不复也。 

  解释:(教学生)不到他苦思冥想怎么也弄不明白的时候,不去开导他;不到他想说而又说不出来的时候,不去启发他。告诉他(四方形)的一个角,他不能由此推出另外三个角,就不再往下教他(新知识)了。

  学习Hbase的开端,就是要了解它的架构,以及HMaster,HRegionServer 的一个启动流程,明白了Hbase内部的基本流程,才能从大局上把握住。明白了Hbase的组成部分,才能在集群出现问题的时候,快速定位到模块,再从模块定位到具体的错误。

  下面记录下在搭建hbase源码阅读环境中的步骤:

    1、mvn 安装(Maven 3.0 or later)

    2、在命令行中cd 到hbase的源码目录中,执行 mvn eclipse:eclipse 慢慢等待啊

    3、在Eclipse中选择导入Existing Maven Project

    4、按照源码目录下的pom.xml的项目顺序对每个子项目进行 mavn install(Eclipse直接操作),这个过程中可能会提示jdk的 tools.jar找不到的问题,只需要在该项目  

       pom.xml文件中添加指定tools.jar的位置

<dependency>
      <groupId>jdk.tools</groupId>
      <artifactId>jdk.tools</artifactId>
      <version>1.7</version>
      <scope>system</scope>
      <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
 </dependency>

   

  使用Remote debug的方式对Hbase源码进行调试,Remote debug 顾名思义就是远程的程序调试,使用这种方法对代码调试不需要本地具有程序的运行环境,而且更直观的看到hbase在集群模式中的启动过程和运行状况。

  Remote debug 的配置方式:

    1、在远程集群的hbase的conf目录下找到hbase-env.sh文件,在jvm启动参数中添加

       -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8081,server=y,suspend=y

      如:export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xdebug -Xnoagent -Djava.compiler=NONE -

      Xrunjdwp:transport=dt_socket,address=8081,server=y,suspend=y"

    参数说明:

      server=y         目标应用程序作为服务监听将要连接的远程调试器(常用)

      suspend=y/n   目标VM是否暂停等待本地debug连接,推荐使用y

      address=8081  端口。

    2、配置Eclipse的Remote debug, 右键项目 debug As --》 debug configuration

 

点击Debug 就可以愉快的跟踪调试Hbase代码了。

 

 

      

    

posted on 2015-03-30 18:12  奏乐  阅读(1950)  评论(0编辑  收藏  举报

导航