Apache spark 为什么vcore总是等于Spark on纱线中的节点数?
我有一个Hadoop集群,它有5个节点,每个节点有12个内核和32GB内存。我使用纱线作为MapReduce框架,因此我对纱线有以下设置:Apache spark 为什么vcore总是等于Spark on纱线中的节点数?,apache-spark,yarn,Apache Spark,Yarn,我有一个Hadoop集群,它有5个节点,每个节点有12个内核和32GB内存。我使用纱线作为MapReduce框架,因此我对纱线有以下设置: 纱线.nodemanager.resource.cpu vcores=10 warn.nodemanager.resource.memory mb=26100 然后,我的纱线簇页面()上显示的簇指标显示VCores总数为40。这很好 然后我在上面安装了Spark,并在客户机模式下使用Spark shell 我使用以下配置运行了一个Spark作业: --
- 纱线.nodemanager.resource.cpu vcores=10
- warn.nodemanager.resource.memory mb=26100
- --驱动器存储器20480m
- --执行器存储器20000m
- --num执行者4
- --执行器核心10
- --形态spark.warn.am.cores=2
- --conf spark.warn.executor.memoryOverhead=5600
capacity scheduler.xml
中有一个参数,名为warn.scheduler.capacity.resource calculator
:
用于比较计划程序中资源的ResourceCalculator实现。默认值,即DefaultResourceCalculator仅使用内存,而DominantResourceCalculator使用主资源比较多维资源,如内存、CPU等
然后我将该值更改为DominantResourceCalculator
但是,当我重新启动Thread并运行相同的Spark应用程序时,我仍然得到了相同的结果,比如说集群指标仍然告诉我使用的VCores是4!我还使用htop命令检查了每个节点上的CPU和内存使用情况,我发现没有一个节点的10个CPU核心都被完全占用。原因可能是什么
我还尝试以细粒度方式运行相同的Spark作业,例如使用
--num executors 40--executor cores 1
,通过这种方式,我再次检查了每个工作节点上的CPU状态,并且所有CPU核心都已完全占用。我想知道相同的情况,但更改资源计算器对我有效。我就是这样设置属性的:
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
纱线.scheduler.capacity.resource-calculator
org.apache.hadoop.warn.util.resource.DominantResourceCalculator
在应用程序的纱线界面中检查分配了多少个容器和vCore,随着更改,容器的数量应为executors+1,vCore应为:(executor cores*num executors)+1。executors每个取10个芯,2个应用程序主机的核心=42个当您总共拥有40个vCores时请求的核心 将executor cores减少到8,并确保重新启动每个NodeManager 还要修改warn-site.xml并设置以下属性:
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
yarn.scheduler.minimum-allocation-vcores
yarn.scheduler.maximum-allocation-vcores
没有将纱线调度程序设置为FairScheduler,我看到了相同的情况。Spark UI显示了正确数量的任务,但这表明没有任何问题。我的集群显示接近100%的CPU使用率,这证实了这一点
设置FairScheduler后,纱线资源看起来是正确的。您可以在Spark UI网站(选项卡环境)上检查所有配置选项是否真的传播到Spark应用程序?如果分配有任何问题,您也可以检查纱线资源管理器日志。您解决过这个问题吗?我现在遇到了同样的问题。请解释一下你是怎么做到的。配置的名称是什么?@Wonay,我用了这个:谢谢你的链接!甚至在启用DefaultResourceCalculator的UI中显示vCore都应该被认为是一个bug。