gpt4 book ai didi

apache-spark - 为什么vcore总是等于YARN上Spark中的节点数?

转载 作者:行者123 更新时间:2023-12-03 13:01:53 24 4
gpt4 key购买 nike

我有一个具有5个节点的Hadoop集群,每个节点具有12个核心,具有32GB内存。我将YARN用作MapReduce框架,因此我对YARN进行了以下设置:

  • yarn.nodemanager.resource.cpu-vcores = 10
  • yarn.nodemanager.resource.memory-mb = 26100

  • 然后,在我的YARN群集页面( http://myhost:8088/cluster/apps)上显示的群集指标显示VCores Total为40。这很好!

    然后,我在其顶部安装了Spark,并在yarn-client模式下使用spark-shell。

    我使用以下配置运行了一个Spark作业:
  • -驱动程序内存20480m
  • -执行器内存20000m
  • --num-executors 4
  • -执行器核心10
  • --conf spark.yarn.am.cores = 2
  • --conf spark.yarn.executor.memoryOverhead = 5600

  • 我将--executor-cores设置为10,将--num-executors设置为4,因此从逻辑上讲,总共应该使用40个Vcore。但是,当我开始运行Spark作业后检查同一个YARN群集页面时,仅使用了4个Vcore,总共4个Vcore

    I also foundcapacity-scheduler.xml中有一个参数-称为 yarn.scheduler.capacity.resource-calculator:

    "The ResourceCalculator implementation to be used to compare Resources in the scheduler. The default i.e. DefaultResourceCalculator only uses Memory while DominantResourceCalculator uses dominant-resource to compare multi-dimensional resources such as Memory, CPU etc."



    然后,我将该值更改为 DominantResourceCalculator

    但是,当我重新启动YARN并运行相同的Spark应用程序时,我仍然得到相同的结果,说集群指标仍然告诉我们使用的VCores是4!我还使用htop命令检查了每个节点上的CPU和内存使用情况,发现没有一个节点将10个CPU内核全部用完。可能是什么原因?

    我还尝试以细粒度的方式(例如 --num executors 40 --executor-cores 1)运行相同的Spark作业,以这种方式,我再次检查了每个工作程序节点上的CPU状态,并且所有CPU内核都被完全占用。

    最佳答案

    我想知道同样的事情,但是更改资源计算器对我有用。这就是我设置属性的方式:

        <property>
    <name>yarn.scheduler.capacity.resource-calculator</name>
    <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
    </property>

    在应用程序的YARN UI中检查分配了多少个容器和vcore,更改后的容器数量应为执行者+1,而vcore应为:(executor-cores * num-executors)+1。

    关于apache-spark - 为什么vcore总是等于YARN上Spark中的节点数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33458063/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com