Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
- 介绍:
①YARN(Yet Another Resource Negotiator)
②通用的资源管理平台
③为各类计算框架提供资源的管理和调度
④核心出发点为了分离资源管理、作业调度/监控
⑤实现分离的做法是拥有一个全局的资源管理器(ResourceManager)
⑥每一个应用程序对应一个应用管理器(ApplicationMaster)
⑦应用程序由一个作业(job)或者job的有向无环图DAG组成 - YARN可以将多种计算框架部署到一个公共集群中,共享集群的资源
① 离线处理MapReduce
② 在线处理Storm
③ 迭代式计算框架Spark
④ 流式处理框架S4
YARN提供功能:
资源的统一管理和调度
集群中所有节点的资源(内存、CPU、磁盘、网络等)抽象为Container。计算框架需要资源进行运算任务时向YARN申请Container,YARN按照特定的策略对资源进行调度进行Container的分配。
资源隔离
YARN使用了轻量级资源隔离机制Cgroups进行资源隔离以避免相互干扰,一旦Container使用的资源量超过事先定义的上限值,就将其杀死。
3.YARN总体上是Master/Slave结构,主要由ResourceManager、NodeManager、ApplicationMaster和Container几个组件组成。
1、resourcemanager
主要负责资源的调度和应用程序的管理
(1)调度器
调度器是将系统中的资源分配给各个正在运行的应用程序。
(2)应用程序管理
负责管理所有applicationmaster
2、nodemanager
定时告诉resourceManger,node节点的资源使用情况;任务的启动与停止
3、applicationmaster
向resourceManager请求资源,监听任务的执行进度
4、container
资源的抽象(包括cpu,内存等信息),当applicationMaster向resourceManager请求资源的时候, 就是以Container抽象资源的形式返回,
限制资源的使用情况
- YARN应用工作流程:
1、client向yarn提交一个应用程序
2、resourceManager为改应用程序分配一个Container,与对应的nodeManager进行通信, 要 求它在此container中启动appmaster
3、appmaster向rm注册,这样用户可以直接通过rm查看应用程序的运行状态
4、appmaster为各个任务想rm请求资源
5、请求到资源后与nodeManager进行通信,要求启动任务
6、启动任务
7、各个任务向appmaster报告状态和进度
8、appmaster向rm请求注销自己