调试livy源代码

尝试本地调试、远程调试

Posted by xuefly on April 10, 2020

本地调试

下载最新的master分支代码:

git clone https://github.com/apache/incubator-livy.git

  • 从inteleJ中打开项目,需要等待livy解析依赖。

找到运行入口

通过查看 bin/livy-server 看到从脚本执行的Java类是:org.apache.livy.server.LivyServer

` command=”$RUNNER $LIVY_SERVER_JAVA_OPTS -cp $LIVY_CLASSPATH:$CLASSPATH org.apache.livy.server.LivyServer”`

设置环境变量

指定日志文件

问题:

  • 启动的时候 incubator-livy/conf/log4j.properties 读不到
  • ‘edit configuration’指定日志文件也不行。

解决方法: 要输出日志可以: cp incubator-livy/conf/log4j.properties incubator-livy/server/src/main/resources/

运行

接下来可以打上短点,debug运行,

远程调试

本地调试可以测试LivyClient到 LivyServer这段。当LivyServer连接安全的大数据集群的时候,会变得棘手。

  • 需要本地电脑加入到安全集群所在的域。
  • macOS要想加入域涉及到一系列的本地系统修改。代价有点大。

参考

  • https://linuxguideandhints.com/centos/freeipa.html#mac-clients
  • https://rcritten.wordpress.com/2018/11/27/setting-up-a-mac-osx-as-an-ipa-client/

而远程调试的一个好处:IDE所在的主机不用在域里面就可以访问其他服务。

  • IDE内 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

  • LivyServer

修改 bin/LivyServer

command="$RUNNER $LIVY_SERVER_JAVA_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -cp $LIVY_CLASSPATH:$CLASSPATH org.apache.livy.server.LivyServer"
  • 启动livyserver
  • IDE内启动

Connected to the target VM, address: '192.168.1.111:5005', transport: 'socket'

参考:IDEA 远程调试