HBase协处理器远程调试

问题描述 投票:1回答:1

如何远程调试HBase协处理器 - RegionObserver?

我正在使用Cloudera Quickstart。

关于它有一个question,但没有关于在哪里放置exec命令的信息。

我也尝试了this instructions,但HBase并没有从那开始。

那么远程调试协处理器的正确方法是什么?

hbase hadoop2 cloudera-quickstart-vm
1个回答
0
投票

你没有提到你使用的IDE,但这里是我如何获得IntelliJ的设置。

添加IntelliJ运行/调试设置

选择运行/调试 - >添加新配置(+符号) - >远程 - >填写区域服务器运行的主机名(如果在本地运行HBase,则将其保留到localhost)。就我而言,主机名是skdevhad6.dev.dszn.cz

Setting up the remote debugger in IntelliJ

设置区域服务器

接下来,编辑hbase-env.sh文件并找到HBASE_OPTS环境值设置。你应该添加:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005

这将确保JDB将使用JDB传输协议侦听端口0.0.0.0上的所有接口(5005)。

这就是HBASE_OPTS后来的样子:

export HBASE_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:-ResizePLAB -XX:ParallelGCThreads=24 -XX:-OmitStackTraceInFastThrow -XX:+ParallelRefProcEnabled"

优选地,如果您有多个HBase区域服务器,也可以将这些设置应用于它们,以便您可以选择稍后要调试的区域(只需在IntelliJ中添加另一个远程调试设置)。

现在,重新启动已应用更新的HBASE_OPTS版本的所有区域服务器。如果重新启动成功,请继续并从IntelliJ运行远程调试会话。

如果您看到类似这样的内容,则表示调试器已附加,您可以将断点放在任何位置。

Successful debug session in IntelliJ

来吧试试吧:) HF!


故障排除

如果安装失败并且您无法连接到远程JDB,请检查区域服务器是否实际侦听您在所有接口上指定的端口:

$ ss -tunlp | grep 5005 # where 5005 is the port it should listen to
tcp    LISTEN     0      1                      *:5005                  *:*      users:(("java",pid=28364,fd=5))

如果是,请检查服务器的防火墙:

$ iptables -L

如果到端口的传入流量受到限制,那么您已发现问题。

© www.soinside.com 2019 - 2024. All rights reserved.