YARN资源管理框架

Hadoop2.x MapReduce V2处理流程

  1. YARNHadoop2.0中的资源管理框架(系统)它的基本思想就是将MRV1中JobTracker拆分成两个独立的服务进程一个是全局的资源管理器 ResourceManager(RM)和每个应用程序持有ApplicationMaster(AppMaster)
  2. 其中RM负责资源管理和分配, AppMaster负责单个应用程序的管理
  3. ps:JobTracker --> TaskTracker和dataNode 是1:1的比例
  4. ResourceManager —> NodeMananger和dataNode 是1:1的比例
    YARN资源管理框架_第1张图片YARN总体上仍然是主从模式Master/slave结构,在整个资源管理框架中
    RM为Master, NodeManager(NM)是slave ,NM和DN是1:1
    RM负责对各个NM上的资源进行统一管理和调度,当用户提交一个应用程序的时候,需要提供一个以跟踪和管理的一个进程AppMaster,它负责向RM申请资源,并要求NM启动一个可以用一定资源的任务, 由于AppMaster会分配到不同的节点上,因此它们之间不会有任何影响
    YARN的基本构成: ResourceManager,NodeManager
    ApplicationMaster,Container 四个组件组成

1.ResourceManager:

RM是一个全局的资源管理器,集群中只能有一个,负责整个系统的资源管理和分配,包括处理客户端请求,启动/监控AppMaster,监控NodeManager,资源的分配和调度
RM它的主要组件有两个构成:
调度器(scheduler /ˈskɛdʒʊələ/ )
调用器根据容量,队列等限制条件,将系统中资源分配给各个正在运行的应用程序.需要注意: 该调度器是一个"纯调度器",它不再从事任何与具体应用程序相关的工作
假设场景:
调度器不负责监控或跟中应用程序的执行状态,也不负责重新启动引用执行无论是失败或是硬件故障 都和它无关这些事情都交给AppMaster完成,调度器仅根据各个应用程序需要资源进行资源分配,而具体的资源分配单位会抽象出一个概念"资源容器"Container
应用程序管理器(ApplicationsManager ASM)
应用程序管理器主要负责整个系统中所有的应用程序,包括应用程序的提交,与调度器的资源协商和启动AppMaster,监控AppMaster运行的状态并在失败的时候进行重新启动

2.ApplicationMaster(AM)

管理YARN内存运行应用程序的每个实例
功能: 数据切片 , 为应用程序申请资源并进一步分配给内部任务 ,任务监控与容错负责协调来之RM的资源,并通过NM监视容易执行和资源使用情况

3.NodeManager(NM):

NM整个集群中DN有多少个就有多少个NM,负责每个节点上的资源使用情况
功能: 单个节点上的资源你管理和任务,处理来之RM的名命令和来之AppMaster命了
NM会定时的向RM汇报当前节点上资源使用的情况和各个Container的运行状态

4.Container

Container是YARN中资源抽象,它封装某个节点上的多个资源信息
例如: 内存,CPU,磁盘,网络等,当AppMaster向RM申请资源的时候,RM为AppMaster返回资源便是用
Container表示的,YARN会为每个人物分配一个Container,且该人物只能使用该Container中的资源
ps:YARN仅支持CPU和内存两种资源,切使用轻量级的资源隔离机制Cgroups
功能: 对task环境的抽象,描述了一些列信息,任务运行资源的集合,任务运行环境
ps:Cilent向RM提交每一个应用程序都必须有一个AppMaster.它经过RM分配资源后会运行在某一个slave节点上
Container中具体做使用就是执行Task任务,Container会做一个事情保证RM,NM和AppMaster自己保证一个通信,通 信机制使用的是RPC机制

YARN的内部执行工作流程:

1.Client向yarn提交job,先找RM分配资源
2.RM开启一个Contaniner,在Container这种运行一个ApplicationsManager(ASM)

3.ASM找一台NM启动AppMaster,计算任务所需要的计算
4.AppMaster会在向 ASM申请运行任务需要的资源
5.调度器scheduler将资源封装发给AppMaster
6.AppMaster将获取到资源分配给各个NM
7.各个NM得到任务和资源就开执行MapTask
8.MapTask执行结束之后会开始行reduceTask
9.MapTask和ReduceTask执行完成之后会将结果反馈给AppMaster
10.AppMaster将任务执行的记过最终返回给ASM
YARN资源管理框架_第2张图片MR具体执行流程:
1.一个MR启动的时候,最先启动是MRAppMaster.MRAppMaster启动后根据本次job的描述信息,计算出现
maptask实例数量,然后向集群申请机器启动相应数量的maptask进程
2.MapTask进程启动之后,会根据给定的数据切片范围进行数据处理,主体流程:
2.1利用客户指定的Inputformat来获取当前数据,行程输入KV键值对
2.2将输入的KV(K是文件的行号,V是文件一行数据)对传递给客户端定义的map()方法做逻辑运算 并将Map()方法输出的KV键值对进行收集
2.3将收集的数据缓存到磁盘中,会根据K的分区排序后不断溢写到磁盘汇总(shuffle)
3.MRAppMaster监控到所有maptask进程任务完成后,会根据客户端指定参数启动相对应的ReduceTask,并告知
Reducetask进程要处理的数据范围

ps:Reduce -->可以看做是一个分区,这个分区是用来处理数据
4.Reducetask进程启动之后,会根据MRAppMaster告知的待处理数据的所在位置,从若干台maptask运行的机器上 获取结果数据,并在本地进行重新归并排序,然后相同key是一个组,然后调用客户端所定义的reduce()方法进行逻辑运 算,并将收集运算结果,最终会调用客户端中的Outputformat将结果输出到外部存储设备

你可能感兴趣的:(yarn)