大数据相关——YARN资源管理器

大数据相关——YARN资源管理器

先学习一下YARN资源管理器,有利于学习MapReduce框架

1.YARN简介

​ 为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop
1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架
YARN.
​ Apache YARN(Yet another Resource Negotiator的缩写)是Hadoop集群的资源
管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平
台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。
​ yarn被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通
⽤性,同样可以⽀持其他的分布式计算模式,⽐如Spark,Tez等计算框架。

2 MapReduce1.x的简介

第⼀代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其
中,HDFS由⼀个NameNode和多个DataNode组成,MapReduce由⼀个JobTracker
和多个TaskTracker组成,对应Hadoop版本为Hadoop 1.x和0.21.X,0.22.x。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-stJ2kA7H-1619183934718)(大数据相关——YARN资源管理器.assets/image-20210423185744384.png)]

-1.Client :作业提交发起者。
-2.JobTracker :初始化作业,分配作业,与TaskTracker通信,协调整个作业。
-3.TaskTracker :保持JobTracker通信,在分配的数据⽚段上执⾏MapReduce任
务。
1.提交作业
编写MapReduce程序代码,创建job对象,并进行配置,比如输入和输出路径,压缩格式等,然后通过Jobclinet来提交作业。
2.作业的初始化
客户端提交完成后,JobTracker会将作业加入队列,然后进行调度,默认的调度方法是F工Fo调试方式。
3.任务的分配
TaskTracker和JobTracker之间的通信与任务的分配是通过心跳机制完成的。
TaskTracker会主动向JobTracker询问是否有作业要做,如果自己可以做,那么就会申请到作业任务,这个任务可以是MapTask也可能是ReduceTask。
4.任务的执行
申请到任务后,TaskTracker会做如下事情:
-1.拷贝代码到本地
-2.拷贝任务的信息到本地
-3.启动JVM运行任务
5.状态与任务的更新
任务在运行过程中,首先会将自己的状态汇报给TaskTracker,然后由TaskTracker汇总告之JobTracker。任务进度是通过计数器来实现的。
6.作业的完成
JobTracker是在接受到最后一个任务运行完成后,才会将任务标记为成功。此时会做删除中间结果等善后处理工作。
3.YARN的工作原理

由⼀个ResourceManager和多个NodeManager构成了yarn资源管理框架。他们是
yarn启动后⻓期运⾏的守护进程,来提供核⼼服务。
——ResourceManager,是在系统中的所有应⽤程序之间仲裁资源的最终权威,即管理整集群上的所有资源分配,内部含有⼀个Scheduler(资源调度器)
——NodeManager,是每台机器的资源管理器,也就是单个节点的管理者,负责启动和监视容器(container)资源使⽤情况,并向ResourceManager及其 Scheduler报告使⽤情况
——container:即集群上的可使⽤资源,包含cpu、内存、磁盘、⽹络等
——ApplicationMaster(简称AM)实际上是框架的特定的库,每启动⼀个应⽤程序,都会启动⼀个AM,它的任务是与ResourceManager协商资源,并与NodeManager⼀起执⾏和监视任务

在这里插入图片描述

1. 调⽤waitForCompletion⽅法每秒轮询作业的进度,内部封装了submit()⽅法,⽤于创建JobCommiter实例,并且调⽤其的submitJobInternal⽅法。提交成功后,如果有状态改变,就会把进度报告到控制台。错误也会报告到控制台
2. JobCommiter实例会向ResourceManager申请⼀个新应⽤ID,⽤于MapReduce作业ID。这期间JobCommiter也会进⾏检查输出路径的情况,以及计算输⼊分⽚。
3. 如果成功申请到ID,就会将运⾏作业所需要的资源(包括作业jar⽂件,配置⽂件和计算所得的输⼊分⽚元数据⽂件)上传到⼀个⽤ID命名的⽬录下的HDFS上。此时副本个数默认是10。
4. 准备⼯作已经做好,再通知ResourceManager调⽤submitApplication⽅法提交作业。
5. ResourceManager调⽤submitApplication⽅法后,会通知Yarn调度器(Scheduler),调度器分配⼀个容器,在节点管理器的管理下在容器中启动
application master进程。
6.application master的主类是MRAppMaster,其主要作⽤是初始化任务,并接受来⾃任务的进度和完成报告。
7.然后从HDFS上接受资源,主要是split。然后为每⼀个split创建MapTask以及参数指定的ReduceTask,任务ID在此时分配
8.然后Application Master会向资源管理器请求容器,⾸先为MapTask申请容器,然后再为ReduceTask申请容器。
9.⼀旦ResourceManager中的调度器(Scheduler),为Task分配了⼀个特定节点上的容器,Application Master就会与NodeManager进⾏通信来启动容器。
10.运⾏任务是由YarnChild来执⾏的,运⾏任务前,先将资源本地化(jar⽂件,配置⽂件,缓存⽂件)
11.然后开始运⾏MapTask或ReduceTask。
12.当收到最后⼀个任务已经完成的通知后application master会把作业状态设置为success。然后Job轮询时,知道成功完成,就会通知客户端,并把统计信息输出到控制台
4.YARN的三种调度器

Scheduler即调度器,根据容量、队列等限制条件(如每个队列分配⼀定的资源,最多执⾏⼀定数量的作业等),将系统中的资源分配给各个正在运⾏的应⽤程序。

1.FIFO Scheduler(FIFO调度器):
FIFO 为 First Input First Output 的缩写,先进先出。FIFO 调度器将应⽤放在⼀个队列中,按照先 后顺序运⾏应⽤。这种策略较为简单,但不适合共享集群,因为⼤的应⽤会占⽤集群的所有资源,每个应⽤必须等待直到轮到⾃⼰。 
优点:简单易懂,不需要任何配置 
缺点:不适合共享集群,⼤的应⽤会占据集群中的所有资源,所以每个应⽤都必须等待,直到轮到⾃⼰执⾏。
下图,只有当job1全部执⾏完毕,才能开始执⾏job2

在这里插入图片描述

2.容量调度器 Capacity Scheduler 
允许多个组织共享⼀个 Hadoop 集群。使⽤容量调度器时,⼀个独⽴的专⻔队列保证⼩作业⼀提交就可以启动。
优点:⼩任务不会因为前⾯有⼤任务在执⾏,⽽只能⼀直等下去
缺点:这种策略是以整个集群利⽤率为代价的,这意味着与使⽤FIFO调度器相⽐,⼤作业执⾏的时间要⻓上⼀些。

在这里插入图片描述

专⻔留了⼀部分资源给⼩任务,可以在执⾏job1的同时,不会阻塞job2的执⾏,但是因为这部分资源是⼀直保留给其他任务的,所以就算只有⼀个任务,也⽆法为其分配全部资源,只能让这部分保留资源闲置着,有着⼀定的资源浪费问题。
3.Fair Scheduler(公平调度器)
公平调度器的⽬的就是为所有运⾏的应⽤公平分配资源。使⽤公平调度器时,不需要预留⼀定量的资源,因为调度器会在所有运⾏的作业之间动态平衡资源,第⼀个(⼤)作业启动时,它也是唯⼀运⾏的作业,因⽽获得集群中的所有资源,当第⼆个(⼩)作业启动时,它被分配到集群的⼀半资源,这样每个作业都能公平共享资源。


如图所示,就像是把好⼏个任务拼接成了⼀个任务,可以充分利⽤资源,同时⼜不会
因为⼤任务在前⾯执⾏⽽导致⼩任务⼀直⽆法完成

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoMissU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值