我是Spark的新手。我觉得我的问题与Spark的架构有关。应用程序(用Java开发)可以使用yarn-client模式在Yarn上运行。命令是
./bin/spark-submit --verbose --class path.to.Class --master yarn-client --files lib.so --conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar --num-executors 30 --driver-memory 512m --executor-memory 512m --executor-cores 3 myJarFile.jar
但是,如果我将模式更改为“yarn-cluster”,我会收到此错误。
线程“main”中的异常org.apache.spark.SparkException:应用程序application_1440071752950_0001以失败状态结束 在org.apache.spark.deploy.yarn.Client.run(Client.scala:841) 在org.apache.spark.deploy.yarn.Client $ .main(Client.scala:867) 在org.apache.spark.deploy.yarn.Client.main(Client.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:664) 在org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:169) 在org.apache.spark.deploy.SparkSubmit $ .submit(SparkSubmit.scala:192) 在org.apache.spark.deploy.SparkSubmit $ .main(SparkSubmit.scala:111) 在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
任何帮助都会受到很多赞赏!
非常感谢你!
答案 0 :(得分:4)
在您提供的命令中,您缺少--jars选项。
引用spark文档:"如果您将SparkContext.addJar函数用于本地文件并以纱线群集模式运行,则--jars选项允许SparkContext.addJar函数工作。"
答案 1 :(得分:2)
Yarn客户端是网关计算机上的驱动程序(从您提交作业的位置)。它只会要求执行人。但是,如果你想运行HA,那么就运行yarn-cluster。在集群模式下,驱动程序可以进入任何节点,以这种方式纱线将照顾。
在上面的示例中,您缺少一些参数。
答案 2 :(得分:1)
我认为您应该在纱线群集模式中交叉检查运行火花作业的命令。 你可以参考spark documentation
答案 3 :(得分:1)
你必须在这里查看3件主要内容。
检查您是否在main方法中创建了spark上下文。我在司机里面。我看到人们在主要思想之外创造它将被视为全局变量。
您不必参考装配罐。它将自动调用。检查您是否遗漏了申请中使用的任何其他罐子。
在客户端模式下,驱动程序将在一台计算机上运行,执行程序将共享群集资源。在你的一个答案中,我看到你提到你使用平面文件。请检查该文件是否在群集中的公共目录中。在程序中,请确保您从HDFS而不是SC.textFile(“file:// ...”)
答案 4 :(得分:0)
您只能在从工作机器发送spark提交时使用客户端模式,否则您应该使用群集模式发送它。
答案 5 :(得分:0)
在纱线客户端模式下,当驱动程序在纱线簇外运行时。 在纱线群集模式下,驱动程序在app master中运行。