Spark-cluster与Spark-client

时间:2015-08-20 12:10:43

标签: java hadoop apache-spark

我是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)

任何帮助都会受到很多赞赏!

非常感谢你!

6 个答案:

答案 0 :(得分:4)

在您提供的命令中,您缺少--jars选项。

引用spark文档:"如果您将SparkContext.addJar函数用于本地文件并以纱线群集模式运行,则--jars选项允许SparkContext.addJar函数工作。"

答案 1 :(得分:2)

Yarn客户端是网关计算机上的驱动程序(从您提交作业的位置)。它只会要求执行人。但是,如果你想运行HA,那么就运行yarn-cluster。在集群模式下,驱动程序可以进入任何节点,以这种方式纱线将照顾。

在上面的示例中,您缺少一些参数。

答案 2 :(得分:1)

我认为您应该在纱线群集模式中交叉检查运行火花作业的命令。 你可以参考spark documentation

答案 3 :(得分:1)

你必须在这里查看3件主要内容。

  1. 检查您是否在main方法中创建了spark上下文。我在司机里面。我看到人们在主要思想之外创造它将被视为全局变量。

  2. 您不必参考装配罐。它将自动调用。检查您是否遗漏了申请中使用的任何其他罐子。

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

  4. 访问该文件

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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