调试Spark应用程序

And*_*v93 17 eclipse debugging apache-spark

我正在尝试使用主节点和多个工作节点在集群上调试Spark应用程序.我已成功使用Spark独立集群管理器设置主节点和工作节点.我下载了带有二进制文件的spark文件夹,并使用以下命令设置worker和master节点.这些命令从spark目录执行.

启动master的命令

./sbin/start-master.sh
Run Code Online (Sandbox Code Playgroud)

用于启动工作节点的命令

./bin/spark-class org.apache.spark.deploy.worker.Worker master-URL
Run Code Online (Sandbox Code Playgroud)

提交申请的命令

./sbin/spark-submit --class Application --master URL ~/app.jar
Run Code Online (Sandbox Code Playgroud)

现在,我想了解当我提交应用程序时通过工作节点上的Spark源代码进行控制的流程(我只想使用其中一个使用reduce()的给定示例).我假设我应该在Eclipse上设置Spark.Apache Spark网站上的Eclipse安装链接似乎已被破坏.我将非常感谢有关设置Spark和Eclipse的指导,以便在工作节点上单步执行Spark源代码.

谢谢!

wha*_*erg 29

区分调试驱动程序和调试其中一个执行程序非常重要.他们需要传递不同的选项spark-submit

要调试驱动程序,可以在spark-submit命令中添加以下内容.然后将远程调试器设置为连接到启动驱动程序的节点.

--driver-java-options -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
Run Code Online (Sandbox Code Playgroud)

在此示例中指定了端口5005,但如果该端口上已在运行某些内容,则可能需要自定义该端口.

连接到执行程序类似,请在spark-submit命令中添加以下选项.

--num-executors 1 --executor-cores 1 --conf "spark.executor.extraJavaOptions=-agentlib:jdwp=transport=dt_socket,server=n,address=wm1b0-8ab.yourcomputer.org:5005,suspend=n"
Run Code Online (Sandbox Code Playgroud)

将地址替换为您当地计算机的地址.(测试您可以从spark群集中访问它是一个好主意).

在这种情况下,在侦听模式下启动调试器,然后启动spark程序并等待执行程序附加到调试器.将执行程序的数量设置为1或者多个执行程序都将尝试连接到调试程序很重要,这可能会导致问题.

这些示例用于使用sparkMasterset 运行,yarn-client尽管它们在mesos下运行时也可以工作.如果您正在使用yarn-cluster模式运行,则可能必须将驱动程序设置为附加到调试器而不是将调试器附加到驱动程序,因为您不一定事先知道驱动程序将在哪个节点上执行.


小智 9

如果您只需要调试转换的逻辑,则可以在本地模式下运行Spark应用程序.这可以在您的IDE中运行,您将能够像任何其他应用程序一样进行调试:

val conf = new SparkConf().setMaster("local").setAppName("myApp")
Run Code Online (Sandbox Code Playgroud)

您当然不会使用此设置分发问题.分发问题就像更改主服务器指向群集一样简单.


use*_*158 2

当你在yarn上运行spark应用程序时,有一个像这样的选项:

YARN_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5455 $YARN_OPTS"
Run Code Online (Sandbox Code Playgroud)

您可以将其添加到yarn-env.sh并且可以通过 进行远程调试port 5455

如果您在独立模式下使用 Spark,我相信这会有所帮助:

export SPARK_JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Run Code Online (Sandbox Code Playgroud)