Yarn简介

1.Yarn简介

1.1 整体介绍

Yarn是Hadoop2.0的新资源管理系统,它主要的用处就是资源的管理和调度,给上层的应用提供统一的服务

举个例子中,假如我们需要执行一个MapReduce的任务,任务需要使用哪些节点,怎么让它们协调好,这些都是由Yarn去做的,它充当一个中间管理层的角色,这有一张关系图,一目了然。

[外链图片转存失败(img-ofqsREP7-1568022755569)(https://note.youdao.com/yws/api/personal/file/WEB734f4550783a5dc89fbffc3df6d4b351?method=download&shareKey=2cc5aeb40cef6fe389fc9cc2a789eef5)]

可以看到,不只是MapReduce,大多数的运算框架都可以在Yarn上运行。

1.2 功能特点

引入资源管理框架的目的就是提高资源利用率,方便管理以及节点间数据共享,基于这个目的Yarn有其自己的特点来支撑。

  1. 解耦: Yarn不清楚用户提交的程序运行机制,Yarn只负责调度,这就达到支持不同运算框架的目的,它根本不管程序如何运行,用户申请资源,Yarn给资源,它保证这一点就足够了。
  2. master/salve架构:这个与大多数分布式框架一样,主/从关系架构,保证程序的可用性以及一致管理的实现。
  3. 可扩展:其实这个跟解耦差不多,Yarn提供统一的规则,只要你按照这个规则,无论是什么框架都可以支持,这为同一框架的版本兼容,不同框架的同时使用,以及使用新框架,都提供了方便。

2.Yarn架构

大的特点还是master/salve的主从架构

2.1 基本架构

[外链图片转存失败(img-lchzB6ll-1568022755570)(https://note.youdao.com/yws/api/personal/file/WEB15643a4a03ff8820a44551a2b8bb9560?method=download&shareKey=3eab5e0d579a9c608b187751bdc30d91)]

通过图中可以看到,除了客户端Yarn包含了三大模块

  • ResourceManager(RM):对所有资源监控、分配和管理,它又包含了两个组件:调度器(Scheduler)应用管理器(ASM)
  • NodeManager(NM):负责每一个节点的维护,主要是启动应用所需要的容器以及监控资源(CPU,内存,网络等)的使用情况,并汇报给调度器。
  • ApplicationMaster(AM):负责每一个具体应用程序的调度和协调,也就是说一个Job在它的整个生命周期都有一个AM来负责。
2.2 执行流程

按照标号一个一个来看

  1. 提交:用户向Yarn提交程序,其中包括了ApplicationMaster程序、启动AM的命令、用户程序等
  2. 初始化:RM为该应用程序分配第一个Container,
    (这里的Container是Cpu+内存的动态资源单位,一个Container不会超过一个NM的大小),然后与对应的NM通信,告诉它在这个Container中启动应用程序的AM
  3. 注册:AM向RM注册,这样用户就可以通过RM查看程序运行状态,然后RM给各个任务申请资源,并监控运行状态,直到运行结束。
  4. 申请资源:AM用轮询的方式通过RPC协议向RM申请和领取资源。
  5. 准备:AM领到资源后通知NM,告诉它你该启动程序了。
  6. 运行:NM会为程序设置好运行环境,然后通过脚本正式开始运行。
  7. 监控:各个任务可以向自己的AM汇报运行状态,执行过程中,用户随时可以通过RPC向AM查看状态。
  8. 结束:任务执行结束,销毁任务。

这里以MapReduce为例,解释一下过程

假设现在有个MapReduce任务,先提交第一个,RM找到一个NM,在NM中启动AM,AM拿到程序,开始对MR做切分,切分后向RM申请运行所需资源,RM分配后,AM将切分过的任务发给RM分配的NM,然后正式由NM执行task,以此类推执行下一个MR。

这里对应关系是这样

任务节点
所有的任务一个RM管理
一个MapReduce一个AM管理
一个具体的map或reduce的task一个NM运行
2.3 三种资源调度器
  • FIFO调度器(FIFO Scheduler):这个最简单,就是先来先服务,每个应用必须等待直到轮到自己运行。
  • 容量调度器(Capacity Scheduler):允许多个组织共享一个Hadoop集群,每一个组织又有自己的队列,也就是组织内使用FIFO方案。
  • 资源调度器- Fair:顾名思义,对所有的应用作业都均匀分配资源,默认情况是基于内存来安排,也可以设置根据CPU。

3. 比较MRv1

3.1 MRv1的缺点
  1. JobTracker容易存在单点故障
  2. JobTracker负担重,既要管理资源,又要调度作业,处理过多任务时资源消耗过大
  3. TaskTracker只是以MapReduce的数目作为资源的表示,并没有考虑内存和CPU,如果两个内存消耗很大的task调度到一起,很容易出现OOM
  4. TaskTracker端,把资源强制划分为map task slot和reduce task slot,而且两者不能相互转换,如果任务只有map或task,资源会造成浪费。
3.2 Yarn的优势
  1. 监测Job子任务的程序分布式化了。
  2. AM可以由用户自己编写,让不同的编程模型跑在Hadoop上
  3. 资源以内存+CPU分配,比之前的数量更合理
  4. JobTracker的监控任务交给AM做了,改进了之前JobTracker的负担过重问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值