首页 > 解决方案 > Spark Standalone:应用程序获得 0 个内核

问题描述

我似乎无法将核心分配给应用程序。这会导致以下(显然很常见)错误消息:

Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

我在 Spark 集群中有一个主服务器和两个从服务器。都是 8 核 i7s 和 16GB 内存。

spark-env.sh在这三个上都保留了几乎处女,只是指定了主服务器的 IP 地址。

spark-submit的如下:

nohup ./bin/spark-submit
  --jars ./ikoda/extrajars/ikoda_assembled_ml_nlp.jar,./ikoda/extrajars/stanford-corenlp-3.8.0.jar,./ikoda/extrajars/stanford-parser-3.8.0.jar \
  --packages datastax:spark-cassandra-connector:2.0.1-s_2.11 \
  --class ikoda.mlserver.Application \
  --conf spark.cassandra.connection.host=192.168.0.33 \
  --conf spark.cores.max=4 \
  --driver-memory 4g –num-executors 2 --executor-memory 2g --executor-cores 2 \
  --master spark://192.168.0.141:7077 ./ikoda/ikodaanalysis-mlserver-0.1.0.jar 1000 > ./logs/nohup.out &

我怀疑我将代码中的 sparkConf 初始化与spark-submit. 我需要这个,因为应用程序涉及SparkStreaming可能需要重新初始化SparkContext.

sparkConf 设置如下:

val conf = new SparkConf().setMaster(s"spark://$sparkmaster:7077").setAppName("MLPCURLModelGenerationDataStream")

conf.set("spark.streaming.stopGracefullyOnShutdown", "true")
conf.set("spark.cassandra.connection.host", sparkcassandraconnectionhost)
conf.set("spark.driver.maxResultSize", sparkdrivermaxResultSize)
conf.set("spark.network.timeout", sparknetworktimeout)
conf.set("spark.jars.packages", "datastax:spark-cassandra-connector:"+datastaxpackageversion)
 conf.set("spark.cores.max", sparkcoresmax)

Spark UI 显示以下内容:

火花用户界面截图

标签: apache-spark

解决方案


好的,这绝对是程序员错误的情况。

但也许其他人也会犯类似的错误。Master之前曾被用作本地Spark。我在 spark-defaults.conf 中放置了一些执行程序设置,然后几个月后就忘记了这一点。

有一个级联层次结构,其中 SparkConf 设置优先,然后是 spark-submit 设置,然后是 spark-defaults.conf。spark-defaults.conf 覆盖 Apache Spark 团队设置的默认值

一旦我从 spark-defaults 中删除了设置,一切都已修复。


推荐阅读