我是靠谱客的博主 潇洒短靴,最近开发中收集的这篇文章主要介绍yarn 集群资源管理中碰到的一些问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

根据碰到的几个问题进行描述

1、设置了队列可以使用最大集群资源,但是当用户占用该队列已配置的资源大小时,其他任务再提交的时候一直处于ACCEPTED状态。
查看以下两个参数:
yarn.scheduler.capacity..capacity 表示该队列可使用的资源容量大小百分比
注:所有队列配置的资源百分比相加一定等于100
yarn.scheduler.capacity..maximum-capacity 表示该队列最大可使用的资源容量大小百分比
注:当这个值调大,发现集群资源还有很大空闲,但该队列任务还处于ACCEPTED状态,此时查看以下参数
yarn.scheduler.capacity..user-limit-factor 默认值为1,表示限制该队列可使用的资源总量为自身队列容量的多少倍,如果这个值没有设置,那么默认只能使用自身队列容量大小的资源,此时maximum-capacity不起作用

2、如果任务对driver内存有比较大的要求,而且任务又较多的情况,提交任务可能出现
Application is added to the scheduler and is not activated. User’s AM resource limit exceeded.
此时检查以下两个值:

  • yarn.scheduler.capacity.maximum-am-resource-percent 默认值为0.2,表示集群上AM最多可使用的资源比例,目的为限制过多的app数量
  • yarn.scheduler.capacity..maximum-am-resource-percent 表示集群上某队列可使用的资源比例
    如果出现上方红色字体问题,适当增加这两个值

3、当集群资源调度模式设置为yarn内存调度时,怎么提高并发度?
  在调试应用时发现虽然资源调度模式为内存调度(CPU调度为disabled),但–executor-cores设置会决定任务并发度。因为CPU的算力可能不同,也因任务也分为不同类别,如IO型、计算密集型等,对CPU的依赖也不同,所以有时候可以通过适当提高并发度使多个分区在少的执行周期内完成(比如说有36个分区,可以设置并行度为36,使所有分区在一个执行周期中同时进行),从而提高任务处理效率
yarn.nodemanager.resource.cpu-vcores 表示节点可使用的vcpu核数,默认是8
yarn.scheduler.minimum-allocation-vcores 表示单个container最小可申请的虚拟cpu个数
yarn.scheduler.maximum-allocation-vcores 表示单个container最大可申请的虚拟cpu个数

在节点CPU算力较强的情况下节点,yarn.nodemanager.resource.cpu-vcores可以设置多一点,比如物理24核,可以设置可使用的cpu比例为80%,其他部分留给系统,然后设置cpu-vcores为36或者更大,因为有时候一个任务占用一个物理cpu核,是大马拉小车,大材小用
yarn.scheduler.maximum-allocation-vcores这个参数会限制单个container最大可分配的虚拟cpu核数,如果单个container要使用大内存,建议这个参数也设置大一些,能提高并行度

4、yarn内存调度模式下,任务使用的虚拟核数显示问题
yarn在内存调度的情况下,配置的–executor-cores或者–driver-cores并不显示为任务真实使用的虚拟核数,在yarn任务管理界面,任务使用了几个container,便显示使用了几个虚拟核。

最后

以上就是潇洒短靴为你收集整理的yarn 集群资源管理中碰到的一些问题的全部内容,希望文章能够帮你解决yarn 集群资源管理中碰到的一些问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部