Yarn和调度

Yarn的作用:资源调度分配

启动Yarn后多了 ResourceManager 和 NodeManager 两个进程

Yarn的主要模块:

1.ResourceManager(RM)

Yarn的资源控制框架的中心模块,负责集群中所有的资源的统一管理和分配。

调度器

应用管理器

2.调度器(ResourceScheduler)

根据各个应用程序的资源需求,进行分配

3.应用管理器(Applications Manager)

负责监控或跟踪AM的执行状态

4.NodeManager(NM)

是ResourceManager在每台机器上的代理,负责容器的管理,并监控他们的资源使用情况(CPU,内存,磁盘,网络等等)

以及向RM提供这些资源的使用汇报

5.ApplicationMaster(AM)

yarn中每个应用都回启动一个AM,负责向RM去申请资源。请求NM启动container,并告诉container需要做什么

Applications Manager是监控AM的,和AM不是一个概念

6.container

这是一个虚拟的概念

yarn中所有应用都是在container上运行的,包括ApplicationMaster

(1).container是yarn中资源的抽象,它封装了某个节点上一定的资源(CPU,内存,磁盘,网络登)

(2).container由AM向RM申请,由RM中的ResourceScheduler分配给AM

container的分类:1.运行AM的container;2.运行各类任务的container,由AM向RM申请的

MapReduce On Yarn

1.client向RM提交应用程序,其中包括

AM主程序,启动AM的命令,用户的程序(wordcount)

2.RM为该应用分配第一个container,并与NM通信,要求NM在这个container中启动AM

3.AM首先向RM注册,这样用户可以直接通过RM来查看程序的运行状态(就是WEB端默认的8088端口),即这个配置中的端口号

    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:port</value>
    </property>

4.AM通过RPC协议向ResourceScheduler申领资源

5.一旦AM申领到了资源,与NM通信,要求NM启动任务

6.NM为任务设置好运行环境(环境变量,jar包等等),

将任务的启动命令写到一个脚本中,并通过脚本触发启动任务

7.各个container的task(Map Task,Reduce Task),通过RPC向AM进行进度和状态汇报,以便AM随时可以掌握任务的云运行状态,失败的时候,也会重启container任务

8.应用程序运行完成后,AM会向RM申请注销和关闭。

总结:

1-4.启动ApplicationMaster,领取资源

5-8.运行任务,直到任务完成、

引申出的一些面试题:

1.AM在哪个进程所在的节点进行?

NM

2.AM要申请container吗?向谁申请

要,向RM申请

3.一个作业,第一个container容器运行什么?

AM

Scheduler:

理想情况下,我们应用对yarn资源的请求应该立刻被满足,但是实际上,资源有限。特别是很忙的集群。

比如跑数的高峰期,跑数延迟半个小时,一个小时才开始运行,需要等待。

yarn中负责分配资源的就是Scheduler

调度本身就是一个大难题,很难找到完美的解决方案,所以yarn提供了三种调度器

1.FIFO Scheduler

FIFO = First In First Out 队列

这种调度器把应用提交按顺序排成一个队列,先进先出的队列,在进行资源分配的时候,先给队列中最头部的应用分配资源,等到应用满足了,再给下一个分配,以此类推

问题:大的应用可能会占用所有的资源,造成堵塞,不适合集群

2.Capacity Scheduler

专门有一个队列来运行小任务,但是为小任务专门设置的队列会占用一定的集群资源 ,导致大任务的执行时间会落后于FIFO

3.Fair Scheduler

不需要预先占用一定的资源,动态调整

比如第一个是大任务,且只有这个大任务在运行,那么把所有资源都给它,然后第二个小任务提交了,Fair Scheduler就会分配一半资源给小任务,公平的共享资源,小任务跑完了,还是会把所有资源给到大任务。

默认是Capacity Scheduler

yarn.resourcemanager.scheduler.class

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值