即使在App中设置核心,Spark UI也会显示0个核心

时间:2016-02-03 05:15:49

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

我遇到一个奇怪的问题,即在火花主网址上运行一个应用程序,其中UI无限期地报告“状态”为“等待”,因为无论我配置什么,RUNNING APPLICATIONs表下都会显示0个核心核心数量。

我已经使用以下设置配置了我的应用程序,其中spark.max.cores = 2& spark.default.cores = 2&内存设置为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));

enter image description here

Spark WebUI声明使用零核心并且无限期地等待没有任务运行。应用程序在运行时或核心期间也使用NO MEMORY,并在启动时立即达到等待状态。

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运行后,我在yarn日志错误中收到了这个。我还包括了我更新的提交配置

提交配置

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)

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您使用纱线,则需要告知您的应用使用纱线。将主纱线群添加到spark-submit命令

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

编辑:

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

.SET( “spark.executor.cores”, “2”)

并在运行时将此添加到提交

- NUM-执行人= 2

我很好奇,因为它应该默认为每个执行者1个核心。工作节点是否已注册YARN for Spark?您是否在纱线客户端或纱线群集模式下在此群集上成功使用了Spark?

答案 2 :(得分:0)

请在yarn-site.xml中检查为纱线配置分配给容器的最大芯数。有时,跨企业纱线队列的设置也可以使资源均匀地分布在项目中