6

我是 Apache Zeppelin 的新手,我尝试在本地运行它。我尝试只运行一个简单的健全性检查以查看它是否sc存在并得到以下错误。

我为 pyspark 和 spark 1.5 编译它(我使用 spark 1.5)。我将内存增加到 5 GB,并将端口更改为 8091。

我不确定我做错了什么,所以我收到以下错误以及我应该如何解决它。

提前致谢

java.lang.ClassNotFoundException: org.apache.spark.repl.SparkCommandLine 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) at org.apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.java:401) at org.apache .zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74) at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:68) at org.apache.zeppelin.spark.PySparkInterpreter.getSparkInterpreter(PySparkInterpreter.java :485) 在 org.apache. org.apache.zeppelin.spark.PySparkInterpreter.createGatewayServerAndStartScript(PySparkInterpreter.java:174)。zeppelin.spark.PySparkInterpreter.open(PySparkInterpreter.java:152) at org.apache.zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74) at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java: 68) 在 org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:302) 在 org.apache.zeppelin 的 org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:92) .scheduler.Job.run(Job.java:171) at org.apache.zeppelin.scheduler.FIFOScheduler$1.run(FIFOScheduler.java:139) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java: 511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask。在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 的 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 访问 $201(ScheduledThreadPoolExecutor.java:180)。 concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

更新 我的解决方案是将我的 scala 版本从 2.11.* 降级到 2.10.*,再次构建 Apache Spark 并运行 Zeppelin。

4

2 回答 2

3

我正在根据您在评论中回答的内容做出某些假设。听起来 Zeppelin 设置很好,当我查看SparkCommandLine类时,它是Spark 核心的一部分。

现在 Zeppelin 有自己的最小嵌入式 Spark 类,如果您不设置 SPARK_HOME,它们会被激活。因此,首先,根据这个 github 页面,尝试不设置 SPARK_HOME(您正在设置)和 HADOOP_HOME(我认为您没有设置),看看是否消除了您的底层 Spark 安装“修复”它:

如果没有 SPARK_HOME 和 HADOOP_HOME,Zeppelin 将使用您使用 mvn build 选项指定的嵌入式 Spark 和 Hadoop 二进制文件。如果您想使用系统提供的 Spark 和 Hadoop,请在 zeppelin-env.sh 中导出 SPARK_HOME 和 HADOOP_HOME 您可以使用任何支持的 spark 版本,而无需重新构建 Zeppelin。

如果这可行,那么您就知道我们正在研究 Java 类路径问题。为了解决这个问题,zeppelin-env.sh 文件中还有一个设置,

ZEPPELIN_JAVA_OPTS

在 Zeppelin 邮件列表中提到这里,请确保将其设置为指向实际的 Spark jar,以便 JVM 使用 -classpath 获取它

这是我的 zeppelin 进程看起来的比较,我认为重要的部分是 -cp 参数,在你的系统上执行 ps 并查看你的 JVM 选项,看看它是否同样指向

/usr/lib/jvm/java-8-oracle/bin/java -cp /usr/local/zeppelin/interpreter/spark/zeppelin-spark-0.5.5-incubating.jar:/usr/local/spark/conf/:/usr/local/spark/lib/spark-assembly-1.5.1-hadoop2.6.0.jar:/usr/local/spark/lib/datanucleus-rdbms-3.2.9.jar:/usr/local/spark/lib/datanucleus-core-3.2.10.jar:/usr/local/spark/lib/datanucleus-api-jdo-3.2.6.jar
-Xms1g -Xmx1g -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m -Dzeppelin.log.file=/usr/local/zeppelin/logs/zeppelin-interpreter-spark-jim-jim.log org.apache.spark.deploy.SparkSubmit --conf spark.driver.extraClassPath=:/usr/local/zeppelin/interpreter/spark/zeppelin-spark-0.5.5-incubating.jar
--conf spark.driver.extraJavaOptions=  -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m  -Dfile.encoding=UTF-8 -Xmx1024m -XX:MaxPermSize=512m -Dzeppelin.log.file=/usr/local/zeppelin/logs/zeppelin-interpreter-spark-jim-jim.log
--class org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer /usr/local/zeppelin/interpreter/spark/zeppelin-spark-0.5.5-incubating.jar 50309

希望如果这不起作用,请编辑您的问题以显示您现有的类路径。

于 2016-01-18T18:00:25.320 回答
0

Zeppelin 最近发布了支持 Scala 2.11 和 Spark 2.0 的0.6.1 版本。我也对这个错误消息感到困惑,因为我可以在类路径中清楚地看到我的 Spark 主目录。新版本的 Zeppelin 效果很好;我目前正在使用 Spark 2.0/Scala 2.11 运行它。

于 2016-08-30T18:21:52.177 回答