Rui*_*Rui 18 hadoop-yarn apache-spark
我有一个包含5个节点的Hadoop集群,每个节点有12个核心,32GB内存.我使用YARN作为MapReduce框架,因此我对YARN进行了以下设置:
然后,我的YARN群集页面(http:// myhost:8088/cluster/apps)上显示的群集指标显示VCores Total为40.这很好!
然后我在它上面安装了Spark并在yarn-client模式下使用spark-shell.
我使用以下配置运行了一个Spark作业:
我将--executor-cores设置为10, - num-executors设置为4,所以从逻辑上讲,应该总共使用40个Vcores.然而,当我检查了同样的纱线集群页面星火作业开始运行后,只有 4 Vcores使用,和 4 Vcores总
我还发现有一个参数capacity-scheduler.xml- 被称为yarn.scheduler.capacity.resource-calculator:
"ResourceCalculator实现用于比较调度程序中的资源.默认情况下,即DefaultResourceCalculator仅使用内存,而DominantResourceCalculator使用显性资源来比较多维资源,如内存,CPU等."
然后我将该值更改为DominantResourceCalculator.
但是当我重新启动YARN并运行相同的Spark应用程序时,我仍然得到相同的结果,说集群指标仍然告诉我使用的VCores是4!我还使用htop命令检查了每个节点上的CPU和内存使用情况,我发现没有一个节点完全占用了所有10个CPU核心.可能是什么原因?
我还尝试以细粒度的方式运行相同的Spark作业,比如说--num executors 40 --executor-cores 1,我以这种方式再次检查每个工作节点上的CPU状态,并且所有CPU核心都被完全占用.
小智 6
我也想知道,但更改资源计算器对我有用。
这就是我设置属性的方式:
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
Run Code Online (Sandbox Code Playgroud)
在应用程序的 YARN UI 中检查分配了多少容器和 vcore,更改后容器数量应为 executors+1,vcore 应为:(executor-cores*num-executors) +1。
| 归档时间: |
|
| 查看次数: |
7376 次 |
| 最近记录: |