远程DEBUG HADOOP源码方法
1. 安装IDEA
2. 下载hadoop源码,必须与集群服务代码版本一致,否则会导致有的类无法找到
3. 将源码导入IDEA工程并完成build
4. 点击 菜单栏--运行--编辑配置 进行相关debug设置
5. 点击弹出窗口右上角的“+”添加一个新配置内容
6. 选择“远程JVM调试”
7. 对相关项目进行配置
名称:配置名称--可自定义
调试器模式:选择“附加到远程JVM”
主机:远程服务所在节点IP(此处以hiveserver为例,填写hiverserver所在节点IP)
端口:可自定义(注意:确定此端口在相应节点未被占用并处于对外开放状态)
远程JVM的命令行实参:记录此内容
"-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n"
dt_socket表示使用套接字传输。
address=5005
JVM在5005端口上监听请求,这个设定为一个不冲突的端口即可。
server=y
y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
suspend=y
y表示启动的JVM会暂停等待,直到调试器连接上才继续执行。suspend=n,则JVM不会暂停等待。
8. 登陆到对应的集群或者相应节点上修改hiveserver的JVM参数,将第7步记录的实参信息添加到JVM参数最后,注意多个参数中间的空格。此处已HDP集群为例
9. 重启hive服务
10. 在可复现问题堆栈对应的代码块打debug点
11. 登陆hive客户端beeline进行问题复现,此时即可在IDEA中进行相关代码debug