使用构思

时间:2018-04-25 08:42:31

标签: macos debugging apache-spark

我正在尝试使用主节点和工作节点在本地群集上调试Spark应用程序。我已成功使用带有start-master.sh的Spark独立集群管理器来设置主节点和工作节点,并且它正常工作。但我想知道Spark应用程序如何在spark集群中工作,所以我想在调试中启动集群模式。我阅读了start-master.sh代码,模拟了args并启动了org.apache.spark.deploy.master.Master main方法。不幸的是,它获得了NoClassDefFoundError,我无法打开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 个答案:

答案 0 :(得分:1)

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

  1. 您可以在IDE中使用断点在本地运行spark。
  2. Spark为您提供了在本地运行指向本地文件系统作为HDFS的选项。
  3. 请按照以下链接了解有关如何在spark中为本地模式编写测试用例的更多信息 http://bytepadding.com/big-data/spark/word-count-in-spark/