在做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,
使用jps查看已经启动的进程
进入hbase目录,修改hbase-env.sh文件
[[email protected] hbase-1.3.6]# vim conf/hbase-env.sh
修改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
通过日志可以看到,程序并没有启动,而是等待远程debug
在idea中,我们打开下载好的hbase-1.3.6的源码,必须与部署的版本及代码一致
增加remote,输入部署的host,及刚才配置中的port,选择server模块,
至此,启动之后已经能够对远程的服务进行调试了,记得在调试的地方打断点