admin管理员组文章数量:1611522
目录
- 概述
- 验证
- 结论
概述
yarn.scheduler.capacity.resource-calculator:该配置指定调度器使用的资源计算器,资源计算器用于在调度器中比较资源。默认值是 org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator,只使用内存进行比较,而DominantResourceCalculator 用 Dominant-resource比较多维度资源,如内存,CPU等等。
在文章 《Capacity Scheduler 中 user-limit-factor 参数的理解》的最后,我们提到了集群资源的限制是完全基于内存,而没有使用vCore。原因就是容量调度器默认的资源计算器是 DefaultResourseCalculator,那么如果使用另一种DominantResourceCalculator 资源计算器,能否使资源的限制同时基于内存和CPU这2个维度呢?
验证
我们通过实际测试来验证,将该参数改为DominantResourceCalculator,如下:
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
修改该参数需要重启RM才能生效。
队列的资源配置如下:
<property>
<name>yarn.scheduler.capacity.root.default.capacity</name>
<value>1.0</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
<value>20.0</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
<value>5.0</value>
</property>
集群资源情况如下:
然后提交测试任务
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.3.1.0.17-1.jar\
teragen\
-Dmapred.map.tasks=1000 100000000000 /benchmarks/terasort-input
按照配置,user-limit-facto 为5.0 ,也就是任务最多能使用队列资源的5倍,也就是大约250GB的内存和30个vCore.
查看集群资源使用情况
可以看做,vCore的限制终于生效了。内存只用了64GB,vCore使用32个(其中包括了AM使用的2个vCore),由于vCore的限制使得无法继续使用更多资源了。
然后继续调整 user-limit-facto 为50
<property>
<name>yarn.scheduler.capacity.root.default.user-limit-factor</name>
<value>50.0</value>
</property>
刷新队列后,查看资源使用情况
由于最大资源的限制,作业只用了244G的内存;队列最大123个vCore用了122个,剩余1个vCore没使用,是因为每个container最少需要2个vcore
结论
至此我们就解决了文章 《Capacity Scheduler 中 user-limit-factor 参数的理解》最后提出的疑问,是因为Capacity Scheduler 的资源计算器使用的是默认的DefaultResourseCalculator。
本文标签: 计算器中资源schedulerCapacityresource
版权声明:本文标题:Capacity Scheduler 中资源计算器(Resource Calculator)的使用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728620504a1166295.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论