Spark在YARN上使用的虚拟内核数过少

7
我正在一个YARN集群(HDP 2.4)中使用Spark,具体设置如下:
  • 1个主节点
    • 64 GB RAM(可用50 GB)
    • 24个核心(可用19个核心)
  • 5个从节点
    • 每个节点64 GB RAM(可用50 GB)
    • 每个节点24个核心(可用19个核心)
  • YARN设置
    • 所有容器的内存(一个主机):50 GB
    • 最小容器大小=2 GB
    • 最大容器大小=50 GB
    • vcores = 19
    • 每个容器的最小vcores = 1
    • 每个容器的最大vcores = 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
  • 但是不正确:每个从容器仅使用1个核心,而不是3个,根据YARN ResourceManager UI(它只显示使用了31个容器,而不是91个= 30 * 3 + 1),请参见下面的屏幕截图

enter image description here

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

3个回答

8

0

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


0

使用Ambari时:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接