我是Spark的新手。我觉得我的问题与Spark的架构有关。使用Yarn -client模式,可以在Yarn上运行应用程序(用Java开发)。命令为
./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 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)在sun.reflect.NativeMethodAccessorImpl。invoke0(本地方法)在sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 57)sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43)java.lang.reflect.Method.invoke (Method.java: 606)在.org apache引发美元美元org.apache.spark.deploy.SparkSubmit部署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)
任何帮助都将非常感激!
非常感谢!
在您提供的命令中,您缺少——jars选项。
引用spark文档:"——jars选项允许使用SparkContext. jar文件。addJar函数工作,如果你使用它与本地文件和运行在yarn-cluster模式。
Yarn客户端是网关机器上的驱动程序(从您提交作业的地方)。它只会要求遗嘱执行人。但如果你想运行HA,那就运行yarn-cluster。在集群模式下,驱动程序可以去任何节点,这样yarn就会负责。
在上面的例子中,你缺少了一些参数
我认为您应该交叉检查在yarn集群模式下运行spark job的命令。您可以参考spark文档
这里你必须检查3个主要内容。
-
检查是否在main方法中创建spark上下文。也就是在司机内部。
-
您不必引用程序集jar。它将被自动调用。检查是否丢失了应用程序中使用的其他jar文件
-
在客户端模式下,驱动程序将在一台机器上运行,执行程序将共享集群资源。在你的一个回答中,我看到你提到你正在使用平面文件。请检查该文件是否在集群的公共目录下。在程序中,确保从HDFS访问该文件,而不是SC.textFile("file://…")
当你从工作机器发送spark提交时,你只能使用客户端模式,否则你应该使用集群模式。
在纱线客户端模式下,驱动程序在纱线集群外运行。在yarn集群模式下,驱动程序运行在app master中