用idea调试Spark独立集群

Posted

技术标签:

【中文标题】用idea调试Spark独立集群【英文标题】:Debugging Spark standalone cluster with idea 【发布时间】:2018-04-25 08:42:31 【问题描述】:

我正在尝试使用主节点和工作节点在本地集群上调试 Spark 应用程序。我已经成功地使用带有start-master.sh 的 Spark 独立集群管理器设置了主节点和工作节点,并且它可以工作。但是我想了解 Spark 应用程序在 spark 集群中的工作方式,所以我想以调试模式启动集群。我阅读了start-master.sh 代码,模拟了args 并启动了org.apache.spark.deploy.master.Master main 方法。不幸的是它得到了一个N​​oClassDefFoundError,我无法打开webui。我想知道问题出在哪里。

错误是:

Exception in thread "dispatcher-event-loop-1" java.lang.NoClassDefFoundError: org/eclipse/jetty/util/thread/ThreadPool
    at org.apache.spark.ui.WebUI.attachPage(WebUI.scala:81)
    at org.apache.spark.deploy.master.ui.MasterWebUI.initialize(MasterWebUI.scala:48)
    at org.apache.spark.deploy.master.ui.MasterWebUI.<init>(MasterWebUI.scala:43)
    at org.apache.spark.deploy.master.Master.onStart(Master.scala:131)
    at org.apache.spark.rpc.netty.Inbox$$anonfun$process$1.apply$mcV$sp(Inbox.scala:122)
    at org.apache.spark.rpc.netty.Inbox.safelyCall(Inbox.scala:205)
    at org.apache.spark.rpc.netty.Inbox.process(Inbox.scala:101)
    at org.apache.spark.rpc.netty.Dispatcher$MessageLoop.run(Dispatcher.scala:216)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.util.thread.ThreadPool
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 11 more

我的调试配置是: enter image description here

谢谢!

【问题讨论】:

【参考方案1】:

我建议不要使用 spark 独立集群进行调试。

    您可以在带有断点的 IDE 中本地运行 spark。 Spark 为您提供了在本地运行并指向本地文件系统作为 HDFS 的选项。

请点击以下链接了解更多关于如何在spark中为本地模式编写测试用例 http://bytepadding.com/big-data/spark/word-count-in-spark/

【讨论】:

我也更喜欢这种方法。另一个优势是,通过在本地模式下运行(有效地运行嵌入式 Spark 引擎),您可以直接在 IDE 中运行和调试集成测试,而无需启动任何服务。

以上是关于用idea调试Spark独立集群的主要内容,如果未能解决你的问题,请参考以下文章

用 Java 编写 Spark 独立程序的环境/工具是啥?

Spark集群管理器介绍

在idea中调试spark程序-配置windows上的 spark local模式

Spark 独立集群如何在工作节点上管理多个执行程序?

在独立集群上运行 spark 时出错

Spark 在本地机器而不是独立集群中运行