在做web开发的时候,我们很容易的能够搭建本地环境进行debug调试,

但是对于大数据系统来说,本地调试变得不太现实,我认为主要是由两个原因导致的:

1.依赖的组件太多,比如,hbase就需要依赖zookeeper及hdfs;

2.系统启动需要配置的环境变量及初始化所做的操作比较多;

那么我们如何对大数据系统进行调试呢?以下以hbase作为示例

首先需要java环境,搭建好hadoop,hbase,zookeeper环境,参考官网示例即可,

我这里使用的是hadoop-3.1.3 zookeeper-3.4.x hbase-1.3.6版本,按顺序启动hadoop及zookeeper,

HBase远程调试

使用jps查看已经启动的进程

进入hbase目录,修改hbase-env.sh文件

[[email protected] hbase-1.3.6]# vim conf/hbase-env.sh

HBase远程调试

修改46,47行jvm配置,如果需要调试master节点修改上边的,调试regionserver修改下边的,

增加内容为 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8081,server=y,suspend=y

至此,我们已经完成了配置,现在启动,执行./bin/start-hbase.sh

我们需要观察启动过程中的日志

tail -f logs/hbase-root-master-wentjiang.log

HBase远程调试

通过日志可以看到,程序并没有启动,而是等待远程debug

在idea中,我们打开下载好的hbase-1.3.6的源码,必须与部署的版本及代码一致

HBase远程调试

增加remote,输入部署的host,及刚才配置中的port,选择server模块,

HBase远程调试

至此,启动之后已经能够对远程的服务进行调试了,记得在调试的地方打断点

相关文章: