【问题标题】:Spark UI showing 0 cores even when setting cores in App即使在 App 中设置核心,Spark UI 也显示 0 个核心
【发布时间】:2016-05-12 04:13:04
【问题描述】:

我在从 spark master url 运行应用程序时遇到了一个奇怪的问题,其中 UI 无限期地报告“WAITING”的“状态”,因为无论我配置什么,在 RUNNING APPLICATIONs 表下都会显示 0 个内核核心数。

我使用以下设置配置了我的应用程序,其中 spark.max.cores = 2 & spark.default.cores = 2 & memory 设置为 3GB。该机器是具有超过 24 个内核的企业级服务器。

        SparkConf conf = new SparkConf()
            .setAppName(Properties.getString("SparkAppName"))
            .setMaster(Properties.getString("SparkMasterUrl"))
            .set("spark.executor.memory", Properties.getString("SparkExecMem"))
            .set("spark.cores.max",Properties.getString("SparkCores"))
            .set("spark.driver.memory",Properties.getString("SparkDriverMem"))
            .set("spark.eventLog.enabled", "true")
            .set("spark.deploy.defaultCores",Properties.getString("SparkDefaultCores"));

    //Set Spark context
    JavaSparkContext sc = new JavaSparkContext(conf);
    JavaStreamingContext jssc = new JavaStreamingContext(sc, new Duration(5000));

Spark WebUI 声明使用的核心为零,并且无限期等待没有任务运行。该应用程序在运行时或内核期间也没有使用任何内存,并在启动时立即进入等待状态。

Spark-defaults.conf 
spark.yarn.max_executor.failures         3
spark.yarn.applicationMaster.waitTries   10
spark.history.kerberos.keytab    none
spark.yarn.preserve.staging.files        False
spark.yarn.submit.file.replication       3
spark.history.kerberos.principal         none
spark.yarn.historyServer.address         {removed}.{removed}.com:18080
spark.yarn.scheduler.heartbeat.interval-ms       5000
spark.yarn.queue         default
spark.yarn.containerLauncherMaxThreads   25
spark.yarn.driver.memoryOverhead         384
spark.history.ui.port    18080
spark.yarn.services      org.apache.spark.deploy.yarn.history.YarnHistoryService
spark.yarn.max.executor.failures         3
spark.driver.extraJavaOptions     -Dhdp.version=2.2.6.0-2800
spark.history.provider   org.apache.spark.deploy.yarn.history.YarnHistoryProvider
spark.yarn.am.extraJavaOptions    -Dhdp.version=2.2.6.0-2800
spark.yarn.executor.memoryOverhead       384

提交脚本

spark-submit --class {removed}.{removed}.{removed}.sentiment.MainApp --deploy-mode client /path/to/jar

编辑:2016 年 2 月 3 日 使用 --master yarn-cluster 运行后,我在纱线日志错误中收到此消息。我还包括了我更新的提交配置

提交配置

spark-submit --class com.removed.removed.sentiment.MainApp 
--master yarn-cluster --supervise 
/data04/dev/removed/spark/twitternpi/npi.sentiment-1.0-SNAPSHOT-shaded.jar 
--jars /usr/hdp/2.2.6.0-2800/spark/lib/datanucleus-core-3.2.10.jar,/usr/hdp/2.2.6.0-2800/spark/lib/datanucleus-api-jdo-3.2.6.jar,/usr/hdp/2.2.6.0-2800/spark/lib/datanucleus-rdbms-3.2.9.jar,/usr/hdp/2.2.6.0-2800/spark/lib/spark-1.2.1.2.2.6.0-2800-yarn-shuffle.jar,/usr/hdp/2.2.6.0-2800/spark/lib/spark-assembly-1.2.1.2.2.6.0-2800-hadoop2.6.0.2.2.6.0-2800.jar

错误信息

   ClassLoaderResolver for class "" gave error on creation : {1}
org.datanucleus.exceptions.NucleusUserException: ClassLoaderResolver for class "" gave error on creation : {1}
    at org.datanucleus.NucleusContext.getClassLoaderResolver(NucleusContext.java:1087)
    at org.datanucleus.PersistenceConfiguration.validatePropertyValue(PersistenceConfiguration.java:797)
    at org.datanucleus.PersistenceConfiguration.setProperty(PersistenceConfiguration.java:714)
    at org.datanucleus.PersistenceConfiguration.setPersistenceProperties(PersistenceConfiguration.java:693)
    at org.datanucleus.NucleusContext.<init>(NucleusContext.java:273)
    at org.datanucleus.NucleusContext.<init>(NucleusContext.java:247)
    at org.datanucleus.NucleusContext.<init>(NucleusContext.java:225)

【问题讨论】:

标签: apache-spark pyspark apache-spark-sql spark-streaming spark-dataframe


【解决方案1】:

当执行程序所需的内存大小(由spark-defaults.conf 中的spark.executor.memory 设置)大于AWS 节点上的内存大小时,我遇到了这个问题。但是由于您仅将 3.0 GB 设置为内存,我认为您的情况可能还有其他原因。

【讨论】:

  • 这里也一样,但是内存和分配的核心之间的关系是什么?
【解决方案2】:

如果你在 yarn 中运行,你需要告诉你的应用程序使用 yarn。将 master yarn-cluster 添加到您的 spark-submit 命令中

spark-submit --class your_class --master yarn-cluster /path/to/jar

编辑:

spark.cores.max 适用于 Mesos 或 Standalone。尝试设置:

.set("spark.executor.cores","2")

并在运行时将其添加到提交中

--num-executors=2

不过我很好奇,因为它应该默认为每个执行程序 1 个核心。工作节点是否在 YARN for Spark 中注册?您是否在该集群上以 yarn-client 或 yarn-cluster 模式成功使用过 Spark?

【讨论】:

  • 将它作为 yarn-client 运行,而不是同样的问题。
  • 执行器是否在运行?他们显然不是。检查日志以了解原因。
  • 如果我在 AWS EC2 上作为独立集群运行,我需要进行哪些更改 - 在我的 SUBMIT API 中 - 我确实添加了 num-executors = 2。仍然遇到同样的错误。 @JoeWiden
猜你喜欢
  • 1970-01-01
  • 2020-10-31
  • 2013-03-15
  • 2021-03-05
  • 1970-01-01
  • 2011-01-11
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多