hbase源码调试

mac2024-08-04  64

欢迎关注本人公众号

为了调试源码,我们最好只启动一个regionserver。

hbase集群配置

为了避免在调试过程中由于请求超时而导致地调试中断,可以适当的延长请求的超时时间,修改hbase-site.xml文件中的zookeeper.session.timeout和hbase.zookeeper.property.tickTime的参数值,其中,timeout应该取2-20倍tickTime之间的值。生产环境上timeout最好不要超过1分钟,此处为了调试,我们设置为1个小时。

<property> <name>zookeeper.session.timeout</name> <value>3600000</value> </property> <property> <name>hbase.zookeeper.property.tickTime</name> <value>180000</value> </property>

然后修改hbase-2.1.5/conf/hbase-env.sh中的JVM启动参数

export HBASE_OPTS="$HBASE_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"

需要注意的是:由于一个节点可能兼任多种角色,一定在恰当的位置添加调试参数,如果位置不当,后续的服务在启动时如果也重复要求占用调试端口,而该端口已经被前面启动的服务所占用,这就会导致后续的服务无法启动。比如:当一个node既是hbase master又是hbase regionserver时,如果你在hbase脚本的不正确的位置上加入调试参数,如果hbase master先启动,并且占用了调试端口,那么后续的hbase regionserver服务无法启动了,反过来如果是hbase regionserver服务先启动,那么hbase master就无法启动了。

IDE配置

这里只需要修改一下host即可。

好了,启动hbase集群,启动IDEdebug,就可以愉快的玩耍了。

开启调试启动hbase服务后,可能jps会展示异常main class information unavailable,不过这不影响服务正常运行。

[root@node8 logs]# jps 9560 Jps 7967 -- main class information unavailable

如果出现启动regionserver服务卡住的情况,IDE中开启一下断点调试就好了,不知道为什么。

最新回复(0)