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里面会输出以下信息

1Connected 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调试的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SSH 下远程使用 IDE 编译和调试

Spark远程调试参数

spark远程debug之调试spark on yarn 程序

Jenkins Pipeline 远程调试(可以使用atom作IDE调试)

AWS EMR - IntelliJ 远程调试 Spark 应用程序

Spark 使用intellijidea本地调试