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的代码提交到远程集群
- 如果可以,是否需要配置
- 可能导致我的问题的原因是什么
- 我如何处理这个问题
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
。