不愤不启,不悱不发;举一隅不以三隅反,则不复也。
解释:(教学生)不到他苦思冥想怎么也弄不明白的时候,不去开导他;不到他想说而又说不出来的时候,不去启发他。告诉他(四方形)的一个角,他不能由此推出另外三个角,就不再往下教他(新知识)了。
学习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代码了。