Yarn的概念以及资源分配

资源:一般来说资源分为CPU和内存
内存是一种“决定生死”的资源
CPU是一种“影响快慢”的资源

Yarn是做什么的? 是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,可为mr,spark,storm等提供资源分配与调度。

yarn的模块划分:

ResourceManager
1)处理客户端请求
2)启动/监控ApplicationMaster
3)监控NodeManager
4)资源分配与调度
NodeManager
1)单个节点上的资源管理
2)处理来自ResourceManager的命令
3)处理来自ApplicationMaster的命令
ApplicationMaster(YARN将其看作第三方)
1)数据的切分
2)为应用程序申请资源,并分配给内部任务
3)任务监控与容错
Container容器:资源的基本单位
1)对任务运行环境的抽象,封装了cpu,内存等多维资源以及环境变量
2)启动命令等任务运行相关的信息

Yarn的执行流程:
在这里插入图片描述
1.用户向yarn提交job,其中包含application master程序,启动application master的命令等
2.RM为该job分配一个container,并与对应的NM通信,要求它在该container中启动作业的application master
3.application master启动成功后向RM中的applications manager注册,这样用户就可以通过RM的Web界面一直查看job的执行状态,一直到最后
4.application master采用轮询的方式通过RPC协议向RM中的resource scheduler申请和领取资源
5.一旦application master申请到资源后,与对应的NM通信,要求启动task任务
6.NM为Task任务设置好运行环境后,将任务的启动命令写到一个脚本中,并通过该脚本启动任务,运行任务
7.各个任务Task通过rpc协议汇报自己的状态和进度,以让application master随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向application master查询应用程序的当前运行状态
8.job运行完成后,application master向RM中的applications manager注销并关闭自己

Yarn的三种调度器

1)FIFO Scheduler
在这里插入图片描述
把应用程序提交的计算任务,排列成一个队列,这是先进先出的队列,一个任务完全执行完,才能执行下一个任务,FIFO Scheduler是最简单也是最容易理解的调度器,也不需要任何配置,但它并不适用于共享集群。大的任务可能会占用所有集群资源,这就导致其它小任务被阻塞,比如此图中job1先提交的,即使后来job2也提交了,但是因为job1还没有执行完毕,所以job2必须等job1执行完毕后才可以执行。在共享集群中,更适合采用Capacity Scheduler或Fair Scheduler,这两个调度器都允许大任务和小任务在提交的同时获得一定的系统资源。
2)Capacity Scheduler
yoohhwz
允许多个组织共享集群资源,每个组织分配专门的队列来处理专门的任务,在一个队列中,是采用先进先出(FIFO Scheduler)的策略,比如此图中,两个队列,一个队列A分配80%的资源,一个队列B分配20%的资源来执行小任务,一开始job1先提交的,即使此时队列B中没有提交任务,队列A也只能使用这80%的资源去执行job1任务,到job2提交的时候,队列B就会使用20%的资源去执行job2任务,Capacity Scheduler的配置文件etc/hadoop/capacity-scheduler.xml
3)Fair Scheduler
在这里插入图片描述
Fair调度器的设计目标是为所有的应用分配公平的资源(对公平的定义可以通过参数来设置),假设有两个用户A和B,他们分别拥有一个队列。当A提交一个job1而B没有任务时,A会获得全部集群资源,然后当B提交一个job2后,可能不会立即执行,需要等到A的job1执行完成一部分任务然后释放一些Container,此时job2才会获取资源,执行任务,当job2执行完成后释放资源后,job1如果还没有执行完成,则job1又会获取全部的资源用来执行任务,使用Fair Scheduler需要修改yarn-size.xml文件,创建allocation file,列出存在的队列和各自的 weights and capacities。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值