我安装了一个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以确保worker已注册并具有足够的内存
如何摆脱这种情况,还是我遗漏了一些配置。
7条答案
按热度按时间fae0ux8s1#
当通过设置
spark.cores.max
和spark.executor.memory
resp'请求的内核数量或RAM数量(每个节点)超过可用数量时,就会出现此错误消息。因此,即使没有其他人使用集群,并且您指定要使用每个节点100GB RAM,但您的节点只能支持90GB,您也会收到此错误消息。公平地说,在这种情况下,信息是模糊的,如果它说你超过了最大值,那会更有帮助。
bprjcwpo2#
Spark master似乎无法为此任务分配任何工作进程。工作进程未启动或都处于忙碌状态。
检查主节点上的Spark UI(端口由
spark-env.sh
中的SPARK_MASTER_WEBUI_PORT
指定,默认为8080),应该如下所示:要使群集正常工作,请执行以下操作:
2w3kk1z53#
还要确保你的spark工作人员可以与驱动程序双向通信。检查防火墙等。
nfeuvbwi4#
我遇到了这个问题。我有一个简单的1节点Spark集群,在尝试运行Spark应用程序时遇到了这个错误。
我运行了上面的一些建议,当我试图对集群运行Spark shell时,在UI中看不到这一点,我开始怀疑我的集群没有正常工作。
在我的主机文件中,我有一个条目,比如
SparkNode
,它引用了正确的IP地址。我无意中在
conf/spark-env.sh
文件中的SPARK_MASTER_IP
变量中放置了错误的IP地址。我将其更改为SparkNode
,并将SPARK_LOCAL_IP
更改为指向SparkNode
。为了测试这一点,我在浏览器中使用
SparkNode:7077
打开了UI,我可以看到Spark的一个示例正在运行。然后我使用Wildfires建议运行Spark shell,如下所示:
回到UI,我现在可以看到Spark shell应用程序正在运行,这在以前是看不到的。
所以我退出了Spark Shell,使用Spark Submit运行了我的应用程序,它现在可以正常工作了。
这是绝对值得检查出您所有的IP和主机条目,这是我的问题的根本原因。
hsvhsicv5#
您需要指定正确的SPARK_HOME和您的驱动程序的IP地址,以防Spark无法定位您的Netty jar服务器。请注意,您的Spark主机应该监听您想要使用的正确IP地址。这可以通过在spark-env.sh文件中设置SPARK_MASTER_IP=yourIP来实现。
v440hwme6#
检查有关主机名、IP地址和环回的错误。确保设置
SPARK_LOCAL_IP
和SPARK_MASTER_IP
。1yjd4xko7#
我有类似的问题初始作业没有接受任何资源,修复它指定Spark正确的下载网址spark-env.sh或安装Spark上的所有奴隶。