【问题标题】:Submitting spark app as a yarn job from Eclipse and Spark Context从 Eclipse 和 Spark Context 提交 Spark 应用程序作为纱线作业
【发布时间】:2016-05-03 22:13:18
【问题描述】:

我已经可以从我的 Eclipse IDE 提交 local spark 作业(用 Scala 编写)。但是,我想修改我的 Spark 上下文(在我的应用程序中),以便当我“运行”应用程序(在 Eclipse 中)时,作业将使用 Yarn 作为资源管理器发送到我的远程集群。

使用spark-submit,我可以成功地将作业提交到集群: spark-submit --class <main class> --master yarn-cluster <jar>

我想在 IDE 中实现相同的结果。 我的 sbt 配置(应用程序根目录)如下所示: libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.1" libraryDependencies += "org.apache.spark" %% "spark-yarn" % "1.5.1" % "provided" 在我的应用程序中: val conf = new SparkConf().setAppName("xxx").setMaster("yarn-cluster") 但是,我收到以下错误:

Detected yarn-cluster mode, but isn't running on a cluster. Deployment to YARN is not supported directly by SparkContext. Please use spark-submit.

【问题讨论】:

  • 你好 Neel,我也遇到了同样的问题,你能解决这个问题吗?

标签: apache-spark hadoop-yarn


【解决方案1】:

1) 根据我进行的研究,从 Eclipse 远程提交时,您不能在代码中使用 yarn-cluster 作为主控,而是使用 spark-client

new SparkConf().setAppName("test-app").setMaster("yarn-client");

检查此Cloudera 资源,他们正在深入了解阻止您在集群模式下运行“交互式”应用程序的可能限制因素。

2) 您可能会遇到资源未正确复制到集群的问题。在我的案例中解决问题的方法是在项目的类路径中包含以下文件(没有任何幻想,现在我只是将它们复制到项目的 src/java 目录中):

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml

确保尤其是 core-site.xml 在类路径中,因为我读过的教程都没有提到它。你会遇到麻烦,因为没有fs.defaultFS 配置存在,Spark 会认为目标目录与源(您的本地文件系统)相同,而不是与远程 HDFS 文件系统相同。

【讨论】:

  • 亲爱的 Serhiy,我有同样的问题,我的 IDE 是 eclipse。但我无法解决这个问题。而且我无法完全理解您将配置文件添加到 classpth 的意图。你能给我更多的解释吗?谢谢
猜你喜欢
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多