Spark远程调试IDE调试
Posted 拱头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark远程调试IDE调试相关的知识,希望对你有一定的参考价值。
1、JVM里面设置以下参数(在spark-env.sh中添加系统变量SPARK_JAVA_OPTS)
export SPARK_JAVA_OPTS=" -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8888" |
-agentlib:加载本地lib
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不会暂停等待。 2、启动调试代码(以本地调试为例) ./run-example org.apache.spark.examples.SparkPi 如果出现:Listening for transport dt_socket at address: 8888
表示Application等待连接
(现在测试了以下,可以进入调试的脚本为run-example/spark-submit/spark-shell)
3、在IntelliJ IDEA设置远程调试的IP和Port
依次选择Run->Edit Configurations->点击左上角的+号->Remote->在弹出的页面里面将Host和Port两个选项设置为你Driver运行所在节点机器的IP和Port。
设置完后,设置好程序的断点,然后再点击IDE上面的 Debug 按钮。
这时候,程序会继续运行,而且在IDE里面会输出以下信息
1 | Connected to the target VM, address : 'localhost' , transport : 'socket' |
而且程序会跳到你设置断点的地方,你可以在你IDE的Dubegger
可以启动spark后用以下命令进行测试:
$SPARK_HOME/bin/spark-submit --master spark://localhost:7077 --class org.apache.spark.examples.SparkPi --total-executor-cores 2 --executor-memory 500m $SPARK_HOME/lib/spark-examples-1.5.0-hadoop2.3.0.jar 2
以上是关于Spark远程调试IDE调试的主要内容,如果未能解决你的问题,请参考以下文章
spark远程debug之调试spark on yarn 程序
Jenkins Pipeline 远程调试(可以使用atom作IDE调试)