不执行任务中的不匹配(YARN伪分布式模式下的Spark)

时间:2015-06-21 07:07:56

标签: hadoop apache-spark yarn

我使用YARN(Hadoop 2.6)作为集群管理器运行Spark。 YARN以伪分布式模式运行。我已经启动了带有6个执行器的spark shell,并期待相同的

spark-shell --master yarn --num-executors 6

但是在Spark Web UI中,我只看到4个执行器

enter image description here

这有什么原因吗?

PS:我在我的Ubuntu(14.04)中运行nproc命令,结果如下。我相信这意味着,我的系统有8个核心

mountain@mountain:~$ nproc
8

2 个答案:

答案 0 :(得分:0)

你是否考虑过spark.yarn.executor.memoryOverhead? 它可能会产生隐藏的记忆需求,最终的纱线无法提供全部资源。 另外,请注意纱线圆形容器尺寸为yarn.scheduler.increment-allocation-mb。 这里所有细节: http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

答案 1 :(得分:0)

当集群上没有足够的资源来启动更多执行程序时,就会发生这种情况。考虑以下事项

  1. Spark执行程序在纱线容器中运行。此容器大小由yarn-site.xml中的yarn.scheduler.minimum-allocation-mb值确定。检查此属性。如果您的现有容器消耗了所有可用内存,那么更多的内存将无法用于新容器。所以不会有新的执行者开始

  2. UI中的“存储内存”列显示用于执行和RDD存储的内存量。默认情况下,这等于(HEAP_SPACE-300MB)* 75%。其余的内存用于内部元数据,用户数据结构和其他内容。 ref(Spark on YARN: Less executor memory than set via spark-submit

我希望这会有所帮助。