我使用yarn(hadoop2.6)作为集群管理器运行spark。Yarn以伪分布模式运行。我已经开始与6个执行者Spark壳,并期待着相同的 spark-shell --master yarn --num-executors 6
但是在SparkWebUI中,我只看到4个执行器
有什么原因吗?
ps:我跑了 nproc
命令并给出以下结果。我相信这意味着,我的系统有8个核心
mountain@mountain:~$ nproc
8
我使用yarn(hadoop2.6)作为集群管理器运行spark。Yarn以伪分布模式运行。我已经开始与6个执行者Spark壳,并期待着相同的 spark-shell --master yarn --num-executors 6
但是在SparkWebUI中,我只看到4个执行器
有什么原因吗?
ps:我跑了 nproc
命令并给出以下结果。我相信这意味着,我的系统有8个核心
mountain@mountain:~$ nproc
8
2条答案
按热度按时间oiopk7p51#
当集群上没有足够的资源来启动更多的执行器时,就会发生这种情况。考虑到以下几点
Spark执行器在Yarn容器内运行。此容器大小由yarn-site.xml中的yarn.scheduler.minimum-allocation-mb的值确定。检查此属性。如果现有容器占用了所有可用内存,则新容器将无法使用更多内存。所以不会有新的遗嘱执行人
ui中的storage memory列显示用于执行和rdd存储的内存量。默认情况下,这等于(heap\u space-300mb)*75%。剩余的内存用于内部元数据、用户数据结构和其他内容。参考(Yarn上的Spark:执行器内存少于通过Spark提交设置)
我希望这有帮助。
px9o7tmv2#
你考虑过spark.yarn.executor.memoryoverhead吗?可能会产生隐藏的内存需求,最终无法提供全部资源。另外,请注意,yarn round container size为yarn.scheduler.increment-allocation-mb。所有细节如下:http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/