Spark源码IDEA远程调试
2015-04-20 17:13
232 查看
我们在编写Spark Application或者是阅读源码的时候,我们很想知道代码的运行情况,比如参数设置的是否正确等等。用Logging方式来调试是一个可以选择的方式,但是,logging方式调试代码有很多的局限和不便。下面是介绍如何通过IDE来远程调试Spark的Application或者是Spark的源码。
本文以调试Spark Application为例进行说明,本文用到的IDE是IntelliJ IDEA。步骤如下:
一、JVM里面设置以下参数
这里对上面的几个参数进行说明:
-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_HOME/conf/spark_env.sh的spark_classpath变量里
export SPARK_JAVA_OPTS+="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888"
二、启动Spark Application
启动Spark Application的时候我们可以在终端看到如下输出:
如果你看到第九行的输出(Listeningfor transport dt_socket at address: 8888),那恭喜你了,启动了远程调试。而且Spark Application正在等待我们的IDE连接它。
三、在IntelliJ IDEA设置远程调试的IP和Port
依次选择Edit Configurations->点击左上角的+号->Remote->在弹出的页面里面将Host和Port两个选项设置为你Driver运行所在节点机器的IP和Port。
设置完后,设置好程序的断电,然后再点击IDE上面的 Debug 按钮(就是那个虫子按钮)。
这时候,程序会继续运行,而且在IDE里面会输出以下信息
而且程序会跳到你设置断点的地方,你可以在你IDE的Dubegger里面看到如下的信息:
那么恭喜你了,开始你的源码调试之路吧。
注意事项:
设置encoding值,
否则有中文的时候报错
若有此类错误,最好不要有中文
本文以调试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_HOME/conf/spark_env.sh的spark_classpath变量里
export SPARK_JAVA_OPTS+="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8888"
二、启动Spark Application
启动Spark Application的时候我们可以在终端看到如下输出:
1 | [iteblog.com @ spark spark]$ ./bin/spark-submit -- class scala.WordCount |
2 | --master yarn-cluster |
3 | --queue queue 1 |
4 | --num-executors 30 |
5 | --executor-memory 512 m |
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 |
三、在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' |
那么恭喜你了,开始你的源码调试之路吧。
注意事项:
设置encoding值,
否则有中文的时候报错
若有此类错误,最好不要有中文
相关文章推荐
- IDEA远程调试配置
- Intellij idea远程debug连接tomcat,实现单步调试
- IDEA 远程调试 mapred程序
- Idea远程调试+linux修改防火墙
- IDEA远程部署+调试
- [IDE][IDEA小技巧系列]Intellij IDEA远程调试
- IDEA远程调试需要注意事项(一)
- IDEA 2016 配置远程 TOMCAT 部署 调试
- Tomcat使用IDEA远程Debug调试
- IDEA远程调试mapreduce程序
- idea 之远程debug调试
- 使用IDEA对Ambari Server进行远程调试
- intellij idea远程debug调试resin4教程
- idea远程调试 spark
- IDEA远程debug调试
- 看图说话,idea 远程调试 tomcat下项目
- IntelliJ IDEA远程调试
- IDEA第八章----远程调试
- Win下用idea远程在hadoop上调试spark程序及读取hbase
- Spark - 使用IDEA远程调试位于Yarn-Client模式下的Spark集群相关配置