YARN上的Spark太少使用了vcores

问题描述 投票:6回答:2

我在YARN集群(HDP 2.4)中使用Spark,具有以下设置:

  • 1 Masternode 64 GB RAM(可用50 GB) 24核(可用19核)
  • 5 Slavenodes 每个64 GB RAM(可用50 GB) 每个24核(可用19个核)
  • YARN设置 所有容器(一个主机)的内存:50 GB 最小容器尺寸= 2 GB 最大容器大小= 50 GB vcores = 19 最小#vcores / container = 1 最大#vcores / container = 19

当我使用命令spark-submit --num-executors 30 --executor-cores 3 --executor-memory 7g --driver-cores 1 --driver-memory 1800m ...运行我的spark应用程序时,YARN使用以下设置创建31个容器(每个执行程序进程一个+一个驱动程序进程):

  • 正确:主容器有1个核心和~1800 MB RAM
  • 正确:30个从属容器,每个容器约7 GB RAM
  • 但是不正确:根据YARN ResourceManager UI(它只显示95个中的31个而不是91 = 30 * 3 + 1),每个从属容器只运行1个核心而不是3个核心,请参见下面的截图

enter image description here

我的问题在这里:为什么spark-submit参数--executor-cores 3没有效果?

apache-spark yarn hortonworks-data-platform resource-management
2个回答
7
投票

好的,似乎与此处讨论的问题相同:yarn is not honouring yarn.nodemanager.resource.cpu-vcores该解决方案对我也有用。


0
投票

使用Ambari时:

  • 从右上角选择YARN队列管理器
  • 调度程序部分
  • 将“计算器”下拉菜单更改为=“主导资源”

0
投票

用户界面可能会产生误导。当在YARN中禁用vcore强制执行时,它将只假设每个容器有一个核心,而实际上,如果查看物理机器的实际CPU使用情况,它可能会使用所有核心。还要检查SparkUI上的核心用法,这通常可以更好地了解实际的CPU使用情况。

© www.soinside.com 2019 - 2024. All rights reserved.