执行器数量不匹配(伪分布式模式中的spark)

zqdjd7g9  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(391)

我使用yarn(hadoop2.6)作为集群管理器运行spark。Yarn以伪分布模式运行。我已经开始与6个执行者Spark壳,并期待着相同的 spark-shell --master yarn --num-executors 6 但是在SparkWebUI中,我只看到4个执行器

有什么原因吗?
ps:我跑了 nproc 命令并给出以下结果。我相信这意味着,我的系统有8个核心

mountain@mountain:~$ nproc
8
oiopk7p5

oiopk7p51#

当集群上没有足够的资源来启动更多的执行器时,就会发生这种情况。考虑到以下几点
Spark执行器在Yarn容器内运行。此容器大小由yarn-site.xml中的yarn.scheduler.minimum-allocation-mb的值确定。检查此属性。如果现有容器占用了所有可用内存,则新容器将无法使用更多内存。所以不会有新的遗嘱执行人
ui中的storage memory列显示用于执行和rdd存储的内存量。默认情况下,这等于(heap\u space-300mb)*75%。剩余的内存用于内部元数据、用户数据结构和其他内容。参考(Yarn上的Spark:执行器内存少于通过Spark提交设置)
我希望这有帮助。

px9o7tmv

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/

相关问题