YARN上的Spark太少使用了vcores

时间:2016-07-14 08:19:16

标签: apache-spark yarn hortonworks-data-platform resource-management

我使用以下设置在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个核心的主容器&amp; ~1800 MB RAM
  • 正确:30个从属容器,每个<7 GB RAM
  • 但是不正确:根据YARN ResourceManager UI,每个从属容器只运行 1核而不是3(它只显示95个中的31个,而不是91 = 30 * 3 + 1),见下面的截图

enter image description here

我的问题:为什么spark-submit参数--executor-cores 3无效?

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

使用Ambari时:

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

答案 2 :(得分:0)

用户界面可能会产生误导。如果在YARN中禁用了vcore强制,则每个容器仅假定一个内核,而实际上,如果您查看物理机的实际CPU使用率,则它可能正在使用所有内核。还要检查SparkUI上的核心使用情况,通常可以更好地了解实际的CPU使用情况。