20200624——yarn

Yarn是什么

yarn是一个资源调度框架
在古老的hadoop1.0里面,MapReduce中的JobTracker负责了太多的任务,于是在2.0升级的过程,将这一部分独立出来,也就是yarn。
yet another resource nagotiator 另一种资源调度器

Yarn的架构

架构图

20200624——yarn_第1张图片

Container

容器这个东西是Yarn对资源做的一层抽象,日常开发中,经常需要对底层封装,只提供给上层一个调用接口一样。
20200624——yarn_第2张图片
一个nodemanager里面可以有多个container,container中有cpu和内存。
容器被nodemanager启动,管理,并且实时监控。
容器被resourcemanager进行调度。

resourcemanager

从名字上我们就可以知道resourcemanager负责管理资源,整个系统只有一个rm。当时rm中其实包含了两个组件,一个resource scheduler资源调度器,另一个是application manager应用管理器。

resource scheduler 定时调度器

从本质上来说,scheduler就是一种策略,一种算法。当client提交一个任务的时候,他会根据所需要的资源以及当前集群的资源状况进行分配。注意,它只会负责向应用程序分配资源,并不做监控以及应用程序的追踪。

application manager

应用管理器就是负责管理client用户提交用户提交的应用,监控的任务是application manager负责。

application master

每当client提交一个application的时候,就会新建一个applicationmaster。由这个applicationmaster向resource mananger申请容易资源,获得资源之后将要运行的程序发送到容器上启动,然后进行分布式计算。

application master 的职能

application master实际上是特定计算框架的一个实例,每种计算框架都有自己独特的applicaiton master,负责与resource manager协商资源,并与nodemanager 一同监管container,

1)初始化向resource manager报告自己的活跃信息的进程
2)计算应用程序的资源需求
3)将需求转换成yarn调度器可以理解resourcerequest
4)与调度器协商申请资源
5)与nodemanager协同合作使用分配的container
6)追踪正在运行的container状态,监控它的运行
7)对container或者失败的节点进行处理,再必要的情况下重新申请资源。

nodemanager

nodemanager就是resourcemanager每台机器的代理,负责容器的管理,并且监控资源的使用情况,以及上resource manager提供报告。

提交application到yarn的流程

20200624——yarn_第3张图片
1)client提交作业到yarn
2)resource manager 与 node manager 通信,并为第一个application创建一个容器,这个容器中运行了这个应用的application master
3)application master启动之后,对作业(application)进行拆分,拆分成task,根据情况在一个或者多个容器中运行。然后像resource manager 申请程序运行的容器,并定时像resource mananger 发送心跳。
4)申请到容器后,ApplicationMaster 会去和容器对应的 NodeManager 通信,而后将作业分发到对应的 NodeManager 中的容器去运行,这里会将拆分后的 MapReduce 进行分发,对应容器中运行的可能是 Map 任务,也可能是 Reduce 任务。
5)容器中运行的任务会向application master 发送心跳,汇报自身的情况,当程序运行完成之后,application master再向resource manager注销并释放资源。

你可能感兴趣的:(hadoop)