【问题标题】:Spark on YARN too less vcores usedYARN 上的 Spark 使用的 vcore 太少
【发布时间】:2016-11-17 01:30:31
【问题描述】:

我在具有以下设置的 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/container = 1
    • 最大#vcores/container = 19

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用 Ambari 时:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-14
          • 1970-01-01
          • 2016-02-01
          • 1970-01-01
          • 2019-07-25
          • 2016-11-08
          • 2017-11-15
          • 2016-11-05
          相关资源
          最近更新 更多