如何远程调试hbase协处理器-regionobserver?我正在使用cloudera快速启动。有一个关于它的问题,但是没有关于把它放在哪里的信息 exec 命令。我也试过这个指令,但hbase不是从这个开始的。那么,远程调试协处理器的正确方法是什么呢?
exec
vwhgwdsa1#
你没有提到你使用什么ide,但下面是我如何设置intellij的。
选择run/debug->add new configuration(+sign)->remote->fill the hostname where the regionserver runs(如果您在本地运行hbase,则将其留给localhost)。在我的例子中,主机名是 skdevhad6.dev.dszn.cz .
skdevhad6.dev.dszn.cz
接下来,编辑 hbase-env.sh 归档并查找 HBASE_OPTS 环境值设置。您应该在此处添加:
hbase-env.sh
HBASE_OPTS
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005
这将确保jdb将监听所有接口( 0.0.0.0 )左舷 5005 使用jdb传输协议。这是怎么回事 HBASE_OPTS 以后可能会看:
0.0.0.0
5005
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运行远程调试会话。如果您看到这样的情况,则意味着调试器已连接,您可以将断点放在任何需要的地方。去试试吧:)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
如果到端口的传入流量受到限制,那么您就发现了问题。
1条答案
按热度按时间vwhgwdsa1#
你没有提到你使用什么ide,但下面是我如何设置intellij的。
添加intellij运行/调试设置
选择run/debug->add new configuration(+sign)->remote->fill the hostname where the regionserver runs(如果您在本地运行hbase,则将其留给localhost)。在我的例子中,主机名是
skdevhad6.dev.dszn.cz
.设置区域服务器
接下来,编辑
hbase-env.sh
归档并查找HBASE_OPTS
环境值设置。您应该在此处添加:这将确保jdb将监听所有接口(
0.0.0.0
)左舷5005
使用jdb传输协议。这是怎么回事
HBASE_OPTS
以后可能会看:最好是,如果您有多个hbase区域服务器,也将这些设置应用于它们,以便您可以选择以后要调试的区域(只需在intellij中为此添加另一个远程调试设置)。
现在,重新启动所有已应用更新的区域服务器
HBASE_OPTS
版本。如果重新启动成功,请继续从intellij运行远程调试会话。如果您看到这样的情况,则意味着调试器已连接,您可以将断点放在任何需要的地方。
去试试吧:)hf!
故障排除
如果安装失败并且您无法连接到远程jdb,请检查区域服务器是否实际侦听您在所有接口上指定的端口,使用:
如果是,请检查服务器的防火墙:
如果到端口的传入流量受到限制,那么您就发现了问题。