2015-11-09 70 views
5

我有两个群集,一个在本地虚拟机中,另一个在远程云中。这两个群集都处于独立模式。如何从IntelliJ IDEA提交代码到远程Spark群集

我的环境:

Scala: 2.10.4 
Spark: 1.5.1 
JDK: 1.8.40 
OS: CentOS Linux release 7.1.1503 (Core) 

本地群集:

星火站长:火花:// LOCAL1:7077

远程集群:

火花大师:spark:// remote1:707 7

我要完成这一点:在IntelliJ IDEA的

写代码(只是简单的字计数)在本地(在我laptp),并设置星火主网址spark://local1:7077spark://remote1:7077,然后运行我的IntelliJ IDEA中的代码。也就是说,我不想用​​提交一份工作。

但我得到了一些问题:

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

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

TaskSchedulerImpl:初始作业不接受任何资源;检查你的集群用户界面,以确保工人注册,并拥有足够的资源

这是足够的资源没有足够的内存

而这个日志继续打印,没有进一步的行动。 IntelliJ IDEA中的​​和运行代码结果都一样。

我想知道:

  • 是否有可能从IntelliJ IDEA的代码提交到远程集群?
  • 如果没关系,是否需要配置?
  • 可能导致我的问题的可能原因是什么?
  • 我该如何处理这个问题?

非常感谢!

更新

有一个类似的问题here,但我觉得我的场景是不同的。当我在IntelliJ IDEA中运行代码并将Spark Master设置为本地虚拟机群集时,它可以工作。但是,我得到了Initial job has not accepted any resources;...警告。

我想知道安全策略或烟花是否会造成这种情况?

+0

的可能的复制[与火花蚀运行火花代码被安装在另一个服务器上(http://stackoverflow.com/questions/33591481/running-spark-code-on-eclipse-with-spark-being-install -on-另一个服务器) –

+0

@AlbertoBonsanto但其他职位(这是你)不*不*显示如何直接从IJ运行:它要求建立罐子和使用'火花submit'。 – javadba

回答

3

以编程方式提交代码(例如,通过SparkSubmit)非常复杂。在至少有各种各样的环境设置并通过​​脚本-handled考虑 - 是相当困难的Scala程序中复制。我仍然不确定如何实现它,并且在Spark开发人员社区中已经有很多关于该主题的长时间运行的主题。

我的回答这里是有关你们的一部分:特别是

TaskSchedulerImpl:初始作业不接受任何资源;检查 集群用户界面,以确保工人登记,并 足够的资源

的原因通常有从你的工作与什么是可用的群集上的内核请求的内存和/或数量不匹配。可能来自IJ提交

$ SPARK_HOME/conf目录/火花defaults.conf

没有适当匹配的现有群集在执行任务所需的参数时。您可能需要更新:

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

您可以检查端口8080上火花UI,以验证您所请求的参数实际可用的群集上。

相关问题