Ambari(四)----使用IDEA远程调试Ambari-Server

    科技2022-07-13  137

    文档目录

    一. 远程调试

    1.1 为什么要使用远程调试?1.2 远程调试原理

    二. 配置IDEA远程调试Ambari-Server

    2.1 在IDEA中配置远程服务器2.2 以Debug模式启动Ambari-Server2.3 在IDEA中链接Ambari-Server,追踪程序运行流程

    一. 远程调试

    1.1 为什么要使用远程调试?

    为了查看追踪Ambari-Server对Rest API的处理过程,在理解基本原理的前提下基于Ambari进行二次开发.

    常规的方式有以下两种:

    直接阅读源码

    缺点: 晦涩难懂,很难抓住重点,效率低下

    本地Debug

    缺点: 因本地缺乏必要环境及配置,会直接报错.无法深入了解执行过程

    基于此:采用Debug方式启动Ambari-Server,然后使用本地IDEA环境远程连接Ambari-Server,对Ambari-Server进行远程调试,追踪Ambari-Server的运行流程.

    1.2 远程调试原理

    本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。

    被调试程序的远程虚拟机: 作为 Debug 服务端,监听 Debug 调试指令。

    调试程序的本地虚拟机: IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。

    注意事项:

    被调试的服务器需要开启调试模式服务器端的代码和本地代码必须保持一致,否则会出现断点无法进入的问题。

    二. 配置IDEA远程调试Ambari-Server

    注: 我的IDEA版本为社区版的2020.2,不同版本之间操作可能有些许差别

    2.1 在IDEA中配置远程服务器

    在IDEA界面上方工具栏的文本框中,选择Edit Configurations…,如下图:

    在弹出的Run/Debug Configurations对话框中,点击添加按钮,选择Remote

    配置Remote,主要配置下图中红框标出的属性,包括: Name Host Port Use module classpath(此处应配置ambari源码的根目录)

    点击OK按钮保存该配置.

    2.2 以Debug模式启动Ambari-Server

    这里可以Ambari-Server后端使用的数据库可以 选择MySQL数据库(推荐)或者默认的postgreSQL数据库

    使用MySQL数据库,需要做进一步的配置,操作步骤如下:

    # 拷贝mysql驱动 cp /usr/share/java/mysql-connector-java.jar /var/lib/ambari-server/resources/ # 编辑ambari.properties文件 vim /etc/ambari-server/conf/ambari.properties # 增加属性:server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar

    使用如下命令Debug启动Ambari-Server

    java -server -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=6666 \ -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit \ -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled \ -Dsun.zip.disableMemoryMapping=true -Xms1012m -Xmx3048m \ -XX:MaxPermSize=256m-Djava.security.auth.login.config=/etc/ambari-server/conf/krb5JAASLogin.conf \ -Djava.security.krb5.conf=/etc/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false \ -cp /etc/ambari-server/conf:/usr/lib/ambari-server/*:/usr/share/java/mysql-connector-java.jar \ org.apache.ambari.server.controller.AmbariServer

    注意:这里配置的端口号应与2.1部分配置的相对应

    参数解释:

    -Xdebug:通知JVM工作在调试模式下 -Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境。

    2.3 在IDEA中链接Ambari-Server,追踪程序运行流程

    在程序中相应位置打上断点服务器启动后,工具栏界面点击小虫子按钮开启Debug

    正常连接服务器,进入调试后,在控制输出台输出信息如下:

    点击Debugger进入调试,查看追踪Ambari-Server运行流程
    Processed: 0.013, SQL: 8