Spark-cluster vs Spark-client



我是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个主要内容。

  1. 检查是否在main方法中创建spark上下文。也就是在司机内部。

  2. 您不必引用程序集jar。它将被自动调用。检查是否丢失了应用程序中使用的其他jar文件

  3. 在客户端模式下,驱动程序将在一台机器上运行,执行程序将共享集群资源。在你的一个回答中,我看到你提到你正在使用平面文件。请检查该文件是否在集群的公共目录下。在程序中,确保从HDFS访问该文件,而不是SC.textFile("file://…")

当你从工作机器发送spark提交时,你只能使用客户端模式,否则你应该使用集群模式。

在纱线客户端模式下,驱动程序在纱线集群外运行。在yarn集群模式下,驱动程序运行在app master中

最新更新