文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

YARN Capacity Scheduler怎么实现

2023-06-19 12:44

关注

这篇文章主要讲解了“YARN Capacity Scheduler怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“YARN Capacity Scheduler怎么实现”吧!

特点

以队列为单位划分资源,每个队列可设定一定比例的资源最低保证和使用上限,同时,每个用户也可设定一定的资源使用上限以防止资源滥用。而当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。总之,Capacity Scheduler主要有以下几个特点:


Capacity Scheduler的功能

  1. Capacity Scheduler有自己的配置文件,即存放在conf目录下的capacity-scheduler.xml

  2. 在Capacity Scheduler的配置文件中,队列queueX的参数Y的配置名称为yarn.scheduler.capacity.queueX.Y

  3. 资源分配相关参数:

    • capacity:队列的最小资源容量(百分比)。注意,所有队列的容量之和应小于100

    • maximum-capacity:队列的资源使用上限

    • minimum-user-limit-percent:每个用户最低资源保障(百分比)

    • user-limit-factor:每个用户最多可使用的资源量(百分比)

  4. 限制应用程序数目的相关参数:

    • maximum-applications:集群或者队列中处于等待和运行状态的应用程序数目上限,这是一个强限制项,一旦集群中应用程序数目超过该上限,后续提交的应用程序将被拒绝。默认值为10000。Hadoop允许从集群和队列两个方面该值,其中,集群的总体数目上限可通过参数yarn.scheduler.capacity.maximum-applications设置,默认为10000,而单个队列可通过参数yarn.scheduler.capacity.<queue-path>.maximum-applications设置适合自己的值

    • maximum-am-resource-percent:集群中用于运行应用程序ApplicationMaster的资源比例上限,该参数通常用于限制处于活动状态的应用程序数目。所有队列的ApplicationMaster资源比例上限可通过参数yarn.scheduler.capacity.maximum-am-resource-percent设置,而单个队列可通过参数yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent设置适合自己的值

  5. 队列访问权限控制

    • state:队列状态,可以为STOPPED或者RUNNING。如果一个队列处于STOPPED状态,用户不可以将应用程序提交到该队列或者它的子队列中。类似的,如果root队列处于STOPPED状态,则用户不可以向集群提交应用程序,但正在运行的应用程序可以正常运行结束,以便队列可以优雅地退出

    • acl_submit_application:限定哪些用户/用户组可向给定队列中提交应用程序。该属性具有继承性,即如果一个用户可以向某个队列提交应用程序,则它可以向它所有子队列中提交应用程序

    • acl_administer_queue:为队列指定一个管理员,该管理员可控制该队列的所有应用程序,比如杀死任意一个应用程序等。同样,该属性具有继承性,如果一个用户可以向某个队列中提交应用程序,则它可以向它的所有子队列中提交应用程序

  6. 当管理员需动态修改队列资源配置时,可修改配置文件conf/capacity-scheduler.xml,然后运行“yarn rmadmin -refreshQueues

  7. 当前Capacity Scheduler不允许管理员动态减少队列数目,且更新的配置参数值应是合法值,否则会导致配置文件加载失败


Capacity Scheduler实现

应用程序初始化
  1. 应用程序被提交到ResourceManager之后,ResourceManager会向Capacity Scheduler发送一个SchedulerEventType.APP_ADDED事件,Capacity Scheduler收到该事件后,将为应用程序创建一个FiCaSchedulerApp对象跟踪和维护该应用程序的运行时信息,同时将应用程序提交到对应的叶子队列中,叶子队列会对应用程序进行一系列合法性检查。只有通过这些合法性检查,应用程序才算提交成功,这些合法性包括以下几个方面:

    • 应用程序所属用户拥有该叶子队列的应用程序提交权限

    • 队列及其父队列当前处于RUNNING状态(递归检查)

    • 队列当前已提交的应用程序数目未达到管理员设定的上限

    • 应用程序所属用户提交的应用程序数目未超过管理员设定的上限

资源调度

当ResourceManager收到来自NodeManager发送的心跳信息后,将向Capacity Scheduler发送一个SchedulerEventType.NODE_UPDATE事件,Capacity Scheduler收到该事件后,会依次进行以下操作:

  1. 处理心跳信息:NodeManager发送的心跳信息中有两类信息需资源调度器处理,一类是最新启动的Container,另一类是运行完成的Container,具体如下:

    • 对于最新启动的Container,资源调度器需向ResourceManager发送一个RMContainerEventType.LAUNCHED,进而将该Container从超时监控队列中删除。当资源调度器为ApplicationMaster分配一个Container后,为了防止ApplicationMaster长时间不使用该Container造成资源浪费,它会将该Container加入一个超时监控队列中。如果一段时间内,该队列中的Container仍未被使用,则资源调度器会回收该Container

    • 对于运行完成的Container,资源管理器将回收它使用的资源,以便接下来对这些资源进行再分配
      处理完以上两类信息后,Capacity Scheduler将节点上的空闲资源分配给应用程序

  2. 资源分配

            1. Container主要包含5类信息:

感谢各位的阅读,以上就是“YARN Capacity Scheduler怎么实现”的内容了,经过本文的学习后,相信大家对YARN Capacity Scheduler怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯