6

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

  • 1 个主节点
    • 64 GB RAM(50 GB 可用)
    • 24核(19核可用)
  • 5个从节点
    • 每个 64 GB RAM(50 GB 可用)
    • 每个 24 核(19 核可用)
  • 纱线设置
    • 所有容器(一台主机)的内存:50 GB
    • 最小容器大小 = 2 GB
    • 最大容器大小 = 50 GB
    • vcores = 19
    • 最小 #vcores/容器 = 1
    • 最大 #vcores/容器 = 19

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

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

在此处输入图像描述

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

4

3 回答 3

7

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

于 2016-07-14T08:45:35.757 回答
0

使用 Ambari 时:

  • 从右上角选择 YARN 队列管理器
  • 调度程序部分
  • 将“计算器”下拉菜单更改为 =“主要资源”
于 2018-06-01T04:54:39.850 回答
0

UI 可能具有误导性。当在 YARN 中禁用 vcore 强制时,它只会假设每个容器有一个内核,而实际上,如果您查看物理机的实际 CPU 使用率,它可能正在使用所有内核。还要检查 SparkUI 上的核心使用情况,这通常可以更好地了解实际 CPU 使用情况。

于 2019-05-28T13:50:46.273 回答