我安装了Apache Spark 0.9.0群集,我正在尝试部署从HDFS读取文件的代码。这段代码抛出警告,最终失败了。这是代码
/**
* running the code would fail
* with a warning
* Initial job has not accepted any resources; check your cluster UI to ensure that
* workers are registered and have sufficient memory
*/
object Main extends App {
val sconf = new SparkConf()
.setMaster("spark://labscs1:7077")
.setAppName("spark scala")
val sctx = new SparkContext(sconf)
sctx.parallelize(1 to 100).count
}
以下是警告信息
初次工作没有接受任何资源;检查您的群集UI 确保工人已注册并有足够的记忆
如何摆脱这种情况,或者我错过了一些配置。
答案 0 :(得分:5)
当您通过设置spark.cores.max
和spark.executor.memory
resp'设置核心数量或RAM(每个节点)时,可以得到此信息。超过可用的。因此,即使没有其他人正在使用群集,并且您指定要使用,例如每个节点100GB RAM,但您的节点只能支持90GB,那么您将收到此错误消息。
公平地说,在这种情况下,这个信息是模糊的,如果它说你的超过最大值会更有帮助。
答案 1 :(得分:2)
看起来Spark master无法为此任务分配任何工作人员。工作人员没有开始或他们都忙。
检查主节点上的Spark UI(SPARK_MASTER_WEBUI_PORT
中spark-env.sh
指定的端口,默认为8080)。它应该如下所示:
要使群集正常运行:
答案 2 :(得分:2)
还要确保您的火花工作人员可以与驾驶员进行双向沟通。检查防火墙等。
答案 3 :(得分:2)
我有这个问题。我有一个简单的1节点Spark群集,并且在尝试运行我的Spark应用程序时遇到此错误。
我查看了上面的一些建议,当我尝试针对群集运行Spark shell时,我无法在UI中看到这一点,我怀疑我的群集无法正常工作。
在我的主机文件中,我有一个条目,让我们说SparkNode
,它引用了正确的IP地址。
我无意中将conf/spark-env.sh
文件中的错误IP地址与SPARK_MASTER_IP
变量放在一起。我将其更改为SparkNode
,并将SPARK_LOCAL_IP
更改为指向SparkNode
。
为了测试这个,我在浏览器中使用SparkNode:7077
打开了UI,我可以看到Spark运行的实例。
然后我使用Wildfires建议运行Spark shell,如下所示:
MASTER=spark://SparkNode:7077 bin/spark-shell
回到用户界面,我现在可以看到Spark shell应用程序正在运行,我以前无法实现。
所以我退出Spark shell并使用Spark Submit运行我的应用程序,它现在可以正常工作。
绝对值得检查所有IP和主机条目,这是我问题的根本原因。
答案 4 :(得分:0)
您需要指定正确的SPARK_HOME和您的驱动程序的IP地址,以防Spark无法找到您的Netty jar服务器。请注意,您的Spark主机应该监听您认为要使用的正确IP地址。这可以通过在文件spark-env.sh中设置SPARK_MASTER_IP = yourIP来完成。
val conf = new SparkConf()
.setAppName("test")
.setMaster("spark://yourSparkMaster:7077")
.setSparkHome("YourSparkHomeDir")
.set("spark.driver.host", "YourIPAddr")
答案 5 :(得分:0)
检查有关主机名,IP地址和环回的错误。请务必设置SPARK_LOCAL_IP
和SPARK_MASTER_IP
。
答案 6 :(得分:0)
我有类似的问题初始作业没有接受任何资源,通过在spark-env.sh上指定spark正确的下载URL或在所有从属服务器上安装spark来修复它。
导出SPARK_EXECUTOR_URI = http://mirror.fibergrid.in/apache/spark/spark-1.6.1/spark-1.6.1-bin-hadoop2.6.tgz
初始工作未接受任何资源;检查群集UI以确保工作人员已注册并具有足够的内存