分享

Spark通过IntelliJ IDEA远程调试

本帖最后由 pig2 于 2016-5-3 17:36 编辑

问题导读
1.如何验证启动了远程调试?
2.Spark通过IntelliJ IDEA远程调试的步骤是什么?






我们在编写Spark Application或者是阅读源码的时候,我们很想知道代码的运行情况,比如参数设置的是否正确等等。用Logging方式来调试是一个可以选择的方式,但是,logging方式调试代码有很多的局限和不便。今天我就来介绍如何通过IDE来远程调试Spark的Application或者是Spark的源码。
  本文以调试Spark Application为例进行说明,本文用到的IDE是IntelliJ IDEA。步骤如下:

  一、JVM里面设置以下参数
  1. -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888
复制代码



这里对上面的几个参数进行说明:
-Xdebug 启用调试特性
-Xrunjdwp 启用JDWP实现,包含若干子选项:
transport=dt_socket JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。
address=8888 JVM在8888端口上监听请求,这个设定为一个不冲突的端口即可。
server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
suspend=y y表示启动的JVM会暂停等待,直到调试器连接上才继续执行。suspend=n,则JVM不会暂停等待。



 二、启动Spark Application
  启动Spark Application的时候我们可以在终端看到如下输出:

  1. [iteblog.com@spark spark]$ ./bin/spark-submit --class scala.ScalaShuffle  
  2.             --master yarn-cluster     
  3.             --queue queue1      
  4.             --num-executors 30  
  5.             --executor-memory 512m     
  6.             --executor-cores 2     
  7.             spark-1.0-SNAPSHOT.jar /home/wyp/shuffle /home/wyp/sparkshuffle
  8. Spark assembly has been built with Hive, including Datanucleus jars on classpath
  9. Listening for transport dt_socket at address: 8888
复制代码

如果你看到第九行的输出(Listening for transport dt_socket at address: 8888),那恭喜你了,启动了远程调试。而且Spark Application正在等待我们的IDE连接它。

  三、在IntelliJ IDEA设置远程调试的IP和Port
  依次选择Edit Configurations->点击左上角的+号->Remote->在弹出的页面里面将Host和Port两个选项设置为你Driver运行所在节点机器的IP和Port。
  设置完后,设置好程序的断电,然后再点击IDE上面的 Debug 按钮(就是那个虫子按钮)。
  这时候,程序会继续运行,而且在IDE里面会输出以下信息

  1. Connected to the target VM, address: 'www.iteblog.com:8888', transport: 'socket'
复制代码

而且程序会跳到你设置断点的地方,你可以在你IDE的Dubegger里面看到如下的信息:

1.jpg


2.png






转自
http://www.thebigdata.cn/QiTa/12370.html

已有(6)人评论

跳转到指定楼层
break-spark 发表于 2014-11-8 20:57:35
先收藏下,留着学
回复

使用道具 举报

hb1984 发表于 2014-11-11 22:00:49
谢谢楼主分享。            
回复

使用道具 举报

小南3707 发表于 2014-12-30 11:09:56
感谢卤煮~                     
回复

使用道具 举报

liuzhixin137 发表于 2016-6-7 16:42:52
JVM的参数要如何去设置啊
回复

使用道具 举报

xuliang123789 发表于 2016-6-14 10:01:24
谢谢楼主,正需要,学习一下,赞~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条