Skip to main content

YARN

简介

Yarn是一个分布式的资源管理系统,用于提高分布式的集群环境下的资源利用率,这些资源包括内存、IO、网络、磁盘等。其产生的原因是为了解决原MapReduce框架的不足。最初MapReduce的committer还可以周期性的在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的不足,在原MapReduce框架上进行修改变得越来越困难,所以MapReduce的committer决定从架构上重新设计MapReduce,使下一代的MapReduce(MRv2/Yarn)框架具有更好的扩展性、可用性、可靠性、向后兼容性和更高的资源利用率,以及能支持除了MapReduce计算框架外的更多的计算框架。

基本概念

  • ResourceManager(RM) RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。

  • ApplicationMaster(AM) 用户提交的每个应用程序均包含一个AM,主要功能包括:

    • 与RM调度器协商以获取资源(用Container表示)。
    • 将得到的资源进一步分配给内部任务。
    • 与NM通信以启动/停止任务。
    • 监控所有任务的运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
  • NodeManager(NM) NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它会接收并处理来自AM的Container启动/停止等各种请求。

  • Container Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。

Yarn资源队列管理

概念

名词名词解释
叶子队列是指不能再分配子队列的队列,它可以直接用来分配资源给应用程序。
非叶子队列可以再分配子队列,以进一步划分资源并进行资源管理。
父队列一级队列,支持继续穿件二级子队列
子队列二级队列,无法继续创建子队列
最大容量一个队列能够使用的Yarn资源最大资源量
最小容量在资源紧张的情况下,队列也能够获得一定比例的资源。这是队列能够保证使用的最小资源量

Yarn资源队列操作手册

登录平台

选择【集群-服务-Hadoop】服务概览页,点击【资源队列】进入Yarn资源队列管理页;

img.png

创建资源队列

点击"创建队列",创建父队列

img_1.png

点击"创建队列",创建子队列,创建子队列时需要指定父队列

img_2.png

编辑资源队列

点击"编辑",修改全资源队列容量配置

img.png

删除资源队列

删除资源队列会重启resource服务,强制删除会导致已提交任务运行失败。

开启资源队列抢占

开启"资源抢占",设置资源抢占时间,支持"天"、"周"、"月"级资源抢占周期设置。

img_1.png

开启"资源抢占"后,设置资源抢占队列开关

img_2.png