yarn介绍

yarn出现的原因和优点

在hadoop 1.0时,mapreduce作业执行的任务调度调度由jobtracker和tasktracker,这样增加了namenode的负担,并且,在tasktracker上的资源分配的粒度太粗,容易造成资源的浪费;基于上述原因,在hadoop2.0时代,将资源管理,任务调度和任务监控的任务拆分出来,即是yarn;

在hadoop 2.0时,所有的作业或系统运行所需的资源,都由资源管理器和调度框架同意申请,分配和协调;除了yarn这一组件之外,还有apache Mesos,只不过国内大多采用Yarn进行资源调度,在国外Mesos用的比较多;

采用资源管理器统计进行资源调度由以下几个好处:
(1)提高了资源的利用率;
(2)协同不同作业和不同系统的资源;
(3)增强系统扩展性;

yarn的组件介绍

yarn组件介绍
yarn也是采用主从结构,由一个ResourceManager和多个NodeManager组成;
其中ResourceManager负责对NodeManager所持有的资源进行统一管理和调度;

ResourceManager

ResourceManager时资源管理器它负责对整个集群的资源进行调度,主要由两部分构成,分别是Scheduler和ApplicationsMaster;
其中,Scheduler会根据特定的调度算法,将资管按调度算法分配给每个任务;分配的资源以容器(Container)的形式提供;目前来说,Yarn调度算法目前有三种调度算法,分别是:FIFO Scheduler,Capacity Scheduler
和Fair Scheduler,而Capacity Scheduler和Fair Scheduler这两种调度器用的比较多;
Capacity scheduler是提前为指定用户分配一定量的资源,这部分资源是基础资源,其他用户执行作业时无法占用,但这样会减少总的资源利用率;Fair Scheduler即集群的资源处于共享状态,可以为所有人所使用,且执行作业时,当有多个作业在等待时,大家争取执行的可能性是一致的;
在一般情况下,采用Capacity scheduler的方式,即为每个用户分配一定的基础资源,保证每个用户有最低的资源使用,而在同一个用户的多个作业之间使用Fair Scheduler的方式;
ApplicationsMaster主要负责接收job的提交请求,为应用分配第一个Container来运行ApplicationMaster,并且实时监控ApplicationMaster,在遇到失败时重启ApplicationMaster运行的Container。
Container是集群最小的分配单位,他是一个抽象的概念,一般的Container主要有两个参数,主要是CPU和内存;

NodeManager

NodeManager主要是负责管理集群单个节点的资源和任务,每个节点对应一个NodeManager,NodeManager负责接收ApplicationMaster的请求启动容器,监控容器的运行状态,并将监控节点的状态告知ResourceManager的ApplicationsMaster;
ApplcationMaster是在作业提交之后,在一个NodeManager上生成的,即每提交一个作业,都会有一个对应的ApplicationMaster,它负责进行数据切分,为当前作业想ResourceManager请求资源,当申请到资源之后,会和其他的NodeManager进行通信,要求其他的NodeManager启动容器并运行相应的任务;与此同时,它还监控任务的状态和进度,和ResourceManager进行通信。

YARN的工作流程

根据上图所示,以下是Yarn的具体执行流程:
(1)客户端向Yarn提交一个作业;
(2)ResourceManager向NodeManager收集信息,查看是否有足够的资源,分配一个容器,并与对应的NodeManager进行通信,要求它在 该容器中启动ApplicationMaster;
(3)ApplicationMaster创建成功后向ApplicationsMaster申请注册自己,表示自己可以去管理一个作业;
(4)当ApplicationMaster注册作业成功之后,会对作业需要处理的数据进行切分,然后向ResourceManager申请资源,ResourceManager会根据给定的调度策略提供资源给ApplicationMaster;
(5)ApplicationMaster在申请到资源之后,会和NodeManager进行通信,要求启动任务;
(6)NodeManager在接收到ApplicationMaster的请求之后,会根据他作业提供的信息,启动对应的任务;
(7)启动之后,每个任务都会定时向ApplicationMaster发送自己的状态信息和执行进度;
(8)当作业完成之后,ApplicationMaster会向ApplicationsMaster主要和关闭自己。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值