远程调试spark源码(基于java的调试工具)

来源:互联网 发布:什么是水果作曲软件 编辑:程序博客网 时间:2024/06/07 08:23

开发人员在进行程序编码的过程中,不可避免的需要对代码进行调试,其目的是能精确定位程序的运行状况。本文对spark源码进行调试,此调试方式可以调试任何JVM相关的程序,如:普通的命令行程序、web程序等。

1、实验环境

    

IPhostnamemasterworker192.168.56.101master是否192.168.56.102node1否是192.168.56.103node2否是192.168.56.104node3否是

2、spark-submit命令启动spark应用程序,并打开调试监听

1
 bin/spark-submit --class sparksql.HiveOnSQL scalastudy.jar --driver-java-options -agentlib:jdwp=transport=dt_socket,address=9904,server=y,suspend=y

说明:

    这里spark-submit命令不做具体介绍,需要注意的是--driver-java-options参数,此参数是增加jvm相关参数这里使用"-agentlib:jdwp=transport=dt_socket,address=9904,server=y,suspend=y",启动监听程序,此命令执行后,控制台打印如下:

wKioL1SjU-7QGQmlAADU6EiCCn0689.jpg此监听已启动,此时就可以通过本地代码进行调试

3、调试方式

    服务器打开一个9904的端口进行监听。客户端通过jdb或IDE中configurations配置即可连接。

    1)jdb方式:在命令行$JAVA_HOME/bin/jdb -attach 10.68.156.40:9904进行连接

    2)eclipse方式:Run->debug configurations->XX应用程序->Connection Properties中配置host和port

    3)IDEA方式:Run->Edit configurations->"+"->Remote配置host和port

下面着重介绍IDEA方式,其他方式都差不多,读者可以自行尝试


    (1)在IDEA中打开spark源码

        由于spark-submit命令将会启动SparkSubmit.scala中的main函数,因此我们找到spark源码中的SparkSubmit.scala文件,并在main函数中增加断点

wKioL1SjVejB9i7TAAWKYTwG2aY145.jpg

    (2)IDE中配置远程调试

wKioL1SjVsDASIOoAAR6toDPghI831.jpg

wKiom1SjVgvyfycNAAOnr8ukQWQ552.jpg

    (3)debug启动

wKiom1SjVseQxE5bAAX1RQqq-fc628.jpg

上图显示的就是调试的页面,可以任意增加断点,并调试执行,在控制台打印

wKiom1SjV0DhQ7aLAAVNGcjtdJ8447.jpg远程调试成功。

深入学习可查看IBM的以下链接,详细介绍了java的调试体系

http://www.ibm.com/developerworks/cn/views/java/libraryview.jsp?search_by=%E6%B7%B1%E5%85%A5+Java+%E8%B0%83%E8%AF%95%E4%BD%93%E7%B3%BB


查看现有系统stack,可以使用jdk提供的如下命令

jstack [pid] > javastack.log


出处http://chengyanbin.blog.51cto.com/3900113/1389528

0 0
原创粉丝点击