Intellij idea 如何从IntelliJ IDEA向远程Spark群集提交代码

Intellij idea 如何从IntelliJ IDEA向远程Spark群集提交代码,intellij-idea,apache-spark,Intellij Idea,Apache Spark,我有两个集群,一个在本地虚拟机中,另一个在远程云中。两个集群都处于独立模式 我的环境: Scala: 2.10.4 Spark: 1.5.1 JDK: 1.8.40 OS: CentOS Linux release 7.1.1503 (Core) 本地集群: Spark Master:spark://local1:7077 远程群集: Spark Master:spark://remote1:7077 我想完成这个: 在本地(在我的laptp上)用IntelliJ IDEA编写代码(

我有两个集群,一个在本地虚拟机中,另一个在远程云中。两个集群都处于独立模式

我的环境:

Scala: 2.10.4
Spark: 1.5.1
JDK:   1.8.40
OS:    CentOS Linux release 7.1.1503 (Core)
本地集群:

Spark Master:spark://local1:7077

远程群集:

Spark Master:spark://remote1:7077

我想完成这个:

在本地(在我的laptp上)用IntelliJ IDEA编写代码(只需简单的字数计算),并将Spark Master URL设置为
spark://local1:7077
spark://remote1:7077
,然后在IntelliJ IDEA中运行我的代码。也就是说,我不想使用
spark submit
提交作业

但我遇到了一些问题:

当我使用本地集群时,一切都很顺利。在IntelliJ IDEA中运行代码或使用spark submit可以将作业提交到集群并完成作业

但是当我使用远程群集时,我得到了一个警告日志:

TaskSchedulerImpl:初始作业未接受任何资源;检查集群UI以确保工作人员已注册并拥有足够的资源

它是足够的资源而不是足够的内存

这个日志一直在打印,没有进一步的动作。
spark submit
和IntelliJ IDEA中的运行代码的结果相同

我想知道:

  • 是否可以将IntelliJ IDEA的代码提交到远程集群
  • 如果可以,是否需要配置
  • 可能导致我的问题的原因是什么
  • 我如何处理这个问题
非常感谢

更新

有一个类似的问题,但我认为我的场景是不同的。当我在IntelliJ IDEA中运行我的代码,并将
Spark Master
设置为本地虚拟机集群时,它会工作。但我得到的
最初的工作并没有接受任何资源警告


我想知道安全政策或烟花是否会导致这种情况

以编程方式提交代码(例如通过
SparkSubmit
)相当棘手。至少有各种各样的环境设置和注意事项(由
spark submit
脚本处理)很难在scala程序中复制。我仍然不确定如何实现它:spark开发者社区中有许多关于这个主题的长期运行的线程

我的回答是关于你文章的一部分:特别是

TaskSchedulerImpl:初始作业未接受任何资源;检查 您的群集用户界面,以确保工作人员已注册并具有 充足的资源

原因通常是作业中请求的内存和/或内核数量与集群中可用的不匹配。可能是从IJ提交时

$SPARK_HOME/conf/SPARK-defaults.conf

未正确匹配现有群集上任务所需的参数。您可能需要更新:

spark.driver.memory   4g
spark.executor.memory   8g
spark.executor.cores  8

您可以检查端口8080上的spark ui,以验证您请求的参数在集群上是否实际可用。

可能与@AlbertoBonsanto重复,但另一篇文章(您的)没有说明如何直接从IJ运行:它需要构建jar并使用
spark submit