3-YARN(分布式资源管理框架)

一、简介

  • 简介
    YARN(Yet Another Resource Negotiator)分布式通用资源管理框架,它作为一个专门的资源管理框架从MapReduce中分离出来,聚焦资源管理,通用性极强,适用于各种计算框架,并且具有很强的扩展性,同时支持高可用。从图中我们可以看出,YARN位于文件系统与上层计算框架之间,是资源调度和作业管理的中坚力量。
    image.png

二、原理

  • 系统架构
    在架构上,可以很明显的看出YARN同样采用的是一个主从的架构设计。有一个主节点ResourceManager和多个从节点NodeManager。
    其次YARN的核心思想是将JobTracker的两个主要职责:资源管理与作业调度进行拆分,分别交给两个不同的角色负责。一个是全局的ResourceManager,一个是每个应用一个的ApplicationMaster。ResourceManager负责全局的资源管理和调度,ApplicationMaster作为一个进程运行在NodeManager节点上,负责单个应用的作业任务管理。
    最后还有作为集群整体资源抽象的Container容器。
    image.png

    ResourceManager:作为主节点和全局资源管理器,主要负责对集群的整体资源进行统一的管理和调度。其体现在对Container的分配管理,将系统中的资源分配给各个在集群上运行的作业。仅根据各个作业的资源需求进行分配,而资源分配的单位是Container,从而限定每个作业使用的资源量。以及负责启动ApplicationMaster,监控ApplicationMaster的运行状态并在失败时重新启动,跟踪已分配的Container的进度、状态等职责(通过心跳机制接收NodeManager的资源上报信息)。
    image.png

    NodeManager:NodeManager是每个节点上的资源和任务管理器,他会定时的通过心跳机制向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态,同时会接收并处理来自ApplicationMaster的各种Container启动、停止请求。
    image.png

    ApplicationMaster:用户向集群提交的每一个应用均包含一个ApplicationMaster, 它负责某一个作业的执行和监控。ApplicationMaster是应用框架,由用户提交,ApplicationMaster负责向ResourceManager协调资源,并且与NodeManager协同工作完成作业的执行和监控。YARN为原生计算框架MapReduce提供了ApplicationMaster的实现。也有很多分布式应用开发了对应的应用框架,用于在YARN上运行任务,如Spark的Spark on YARN。
    Container:Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存,CPU,磁盘等,当ApplicationMaster向ResourceManager申请资源时,ResourceManager为ApplicationMaster返回的资源便是用Container表示的。
    image.png

    YARN资源调度流程详细描述:
    1. 用户通过主节点ResourceManager向YARN中提交一个作业,其中包括ApplicationMaster程序,ApplicationMaster启动命令,命令参数,用户程序等准确描述运行ApplicationMaster进程的所有信息。
    2. ResourceManager为该作业分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动ApplicationMaster。
    3. ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后ApplicationMaster将该作业进行切分并为各个任务向ResourceManager申请资源。
    4. ResourceManager收到ApplicationMaster的请求后为这些任务分配资,但是ResourceManager并不会主动把申请到的资源交给ApplicationMaster,而是由ApplicationMaster通过心跳机制采用轮询的方式向ResourceManager领取已经分配的资源,并且这个过程是异步的(以MapReduce为例,ApplicationMaster会先拿到Map task所要用到的资源并进行执行之后,再去拿Reduce Task所要使用的资源)。
    5. 一旦ApplicationMaster拿到这些资源,便会与对应的NodeManager通信,要求它们创建Container并在Container中运行切分好的各个任务(以MapReduce为例,Container中运行的就是一个Map Task或者Reduce Task)。ApplicationMaster会定时监控这些任务的状态和运行进度,以让ApplicationMaster随时掌握各个任务的运行情况,NodeManager也会定时向ResourceManager汇报自己所拥有Container的情况。
    6. 当任务运行完成时,ApplicationMaster会向ResourceManager注销,并关闭自己。
    image.png
  • 高可用
    作为在Hadoop 2.X后出现的新成员YARN同样有高可用机制的实现。
    1. YARN的高可用实现依然是至少两台ResourceManager主节点:一台ActiveResourceManager一台StandbyResourceManager。
    2. 实现主节点间的自动切换。
    但是YARN的高可用实现和HDFS的不同之处在于:
    1. Zookeeper既负责Active节点的选举,又负责恢复ActiveResourceManager的原有状态信息。也就是说Zookeeper在YARN的高可用实现中,除了负责Active节点的选举之外,还负责同步ResourceManager的状态信息,来满足主备节点切换时的状态信息一致性。
    2. ResourceManager有一个内嵌的基于Zookeeper的ActiveStandbyElector去决定哪个ResourceManager应该是Active,当ActiveResourceManager宕机,另外一个ResourceManager将会自动被选举为Active,然后接手工作,并且这里不像HDFS高可用机制,我们需要启动一个ZKFC的守护进程,因为内嵌的ActiveStandbyElector已经替代ZKFC,进行失败检测,和主备切换。
    image.png

    可以使用yarn rmadmin命令来对Resource Manager进行管理,如主备切换、获取节点状态。
    image.png

三、资源调度策略

  • FIFO调度器
    FIFO Schedule(先进先出调度器)是YARN的三种资源调度器之一,也是YARN的默认调度器。
    先进先出调度,顾名思义就是说先提交的作业优先级高,按照作业的提交顺序进行运行。在此调度器中只有一个队列供所有用户共享,无法干涉资源的使用,FIFO Scheduler把作业按提交的顺序排成一个队列,在进行资源分配的时候,先给队列中最靠前的作业进行资源分配,之后的作业保持阻塞,以此类推。
    缺点:局限性明显,资源利用率低,无法交叉运行作业。不够灵活,比如紧急的作业无法插队等,在一般生产环境中不推荐使用。
    image.png
  • 容量调度器
    Capacity Schedule(容量调度器)该调度器用于在共享或者多租户的集群环境中使用,在最大化吞吐量的前提下对多任务的运行尽可能的友好。
    Capacity Schedule支持多队列,并进一步细分,即支持层级化队列,这使得该调度器对集群资源的使用率极高,每个队列都有队列的访问权限控制,并且集群内空闲的资源可以额外分配给任何需要的队列,但是每个队列都要预设资源的分配比例,并且在每个队列的内部依然使用的是FIFO的调度策略,队列内不支持资源抢占。
    特点:
    1. 层次化的队列设计:自队列可是使用父队列的资源,进一步有效利用集群资源。
    2. 容量保证:每一个队列都要预设资源占比,预防队列的资源独占。
    3. 弹性分配:空闲的资源可以额外的分配给任何需要的队列,当出现资源争夺的情况时,会按照比例进行均衡。
    4. 访问控制:每个队列都有队列的访问权限控制,用户只能向自己的队列中提交任务,不能访问没有权限的队列。
    5. 多租户:多用户可共享集群资源。
    6. 支持动态管理:可以动态的调整队列的容量,权限等参数,也支持动态的增加/停止队列,来增加队列数量或者阻止进一步向某个队列中提交任务。
    image.png

    除了直接修改配置文件,在TDH中可以直接在Transwarp Manager中对Yarn直接进行可视化配置的修改。
    image.png

    在WEB界面可以对每个队列进行详细的配置。队列容量表示预分配的队列资源。最大容量表示除了预分配的比例,在集群空闲的情况下最大可以获得多少资源,-1表示没有限制。
    image.png
  • 公平调度器
    Fair Schedule(公平调度器)该调度器的思想是尽可能的公平的调度,即资源占用量少的作业尽量优先完成。在考虑如何分配资源时,Fair Schedule尽可能的使得每个应用都能够得到尽量相当的资源,并且使用该调度器无需预先设定资源的分配比例。
    Fair Schedule同样是多队列,并且每个队列同样拥有队列的访问权限控制,但是他和Capacity Schedule不同的是,Fair Schedule单一队列内部不再是FIFO策略,而是采用了公平调度策略(默认),支持抢占。这种策略使得运行时间短的应用能够尽快结束,而不至于在等待资源时被饿死。另外也可以为队列配置权重,权重用于决定资源使用量的占比。
    特别要注意的是,在有新任务提交后,并不是马上执行,而是等待一小段时间后开始执行,这一小段时间用于资源抢占时前一个任务释放一部分占用资源。
    image.png

    在TDH中,支持可视化配置,按照图示开启公平调度策略
    image.png

    开启公平调度策略之后,可以对公平调度器进行详细的配置。
    image.png

四、运维与监控

如图中的命令,我们可以通过-list查看YARN任务列表,或者通过-kill来杀死任务,以及通过-status查看任务状态。
但是值得注意的是,已经提交到YARN中的任务,我们不能用CTRL+C的方式终止任务,只能通过-kill杀死任务的方式终止任务(使用Hadoop jar提交任务)。


image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容