Apache Hadoop YARN Architecture

Posted strongyoung88

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Hadoop YARN Architecture相关的知识,希望对你有一定的参考价值。

Apache Hadoop YARN Architecture

YARN的基本理念是要将资源管理器和作业调度/监控分离成独立的守护进程。这个理念就是说,要有一个全局的ResourceManager(RM)和每个应用有一个ApplicationMaster (AM),一个应用可以是一个单一的作业,也可以是作业中的一个有向无环图(DAG)。

ResourceManagerNodeManager形成了数据计算框架,在整个系统中,ResourceManager是控制着所有应用的资源请求。NodeManager是每个机器的框架中介,它有责任为容器监控他们的资源(cpu,内存,磁盘,网络),并且上报同样的信息给ResourceManager/Scheduler。

实际上,每个应用的ApplicationMaster是一个明确的框架,任务是向ResourceManager申请资源,且与NodeManager(s)携手工作来执行和监视任务。

ResourceManager有两个主要的组件:Scheduler 和 ApplicationsManager.
注意: ApplicationsManagerApplicationMaster的区别。

Scheduler的责任是分配资源给正在运行的应用,Scheduler是纯净的调度器,它不执行监控或跟踪应用的状态。它也不提供关于重启失败任务的保证。Scheduler是基于应用的资源要求来执行它的调度功能。它也是基于资源容器(resource container)的一个抽象概念,这个容器合并了例如内存,cpu,磁盘和网络等组件。

ApplicationsManager的职责是接受作业提交,谈判第一个容器来执行应用指定的ApplicationMaster,并且在出错的时候,提供重启ApplicationMaster的服务。每个应用的ApplicationMaster都有职责从Scheduler来谈判合适的资源容器,并且跟踪他们的状态和监控进度。

下面说一说我对上面那图的理解:
1、客户端向ResourceManager发出作业提交申请;
2、由ResourceManager中的ApplicationsManager负责接收作业的提交;
3、ApplicationMaster可能需要多个Container来执行应用,这个时候,ApplicationMaster需要向ResourceManager申请资源,即Container
4、然后,ResourceManager中的ApplicationsManagerResourceManager中的Scheduler进行谈判,告诉Scheduler,我要一个容器(Container,这个容器包括应用运行所需的所有资源(memory,cpu,disk,net etc)。
5、Scheduler根据某种策略,响就ApplicationsManager的请求,来,给你一个Containner,我只负责资源分配,其他的我不管。这个时候,ApplicationsManager谈判成功,ApplicationMaster得到一个Container
6、Container需要向ApplicationMaster发送MapReduce Status。如果节点的任务发生错误,ApplicationsManager还需要为其进行重启。
7、NodeManager要向ResourceManager中的ApplicationsManager报告节点的状态(Node Status),这个节点的状态,给我的理解就是,告诉老大,我这还有哪些资源。

以上是关于Apache Hadoop YARN Architecture的主要内容,如果未能解决你的问题,请参考以下文章

Apache Hadoop YARN Architecture

Apache YARN/Mesos与Google Borg差距多远?

# Apache Hadoop Yarn: Yet Another Resource Negotiator论文解读

hadoop错误org.apache.hadoop.yarn.exceptions.YarnException Unauthorized request to start container(示例代码

# Apache Hadoop Yarn: Yet Another Resource Negotiator论文解读

yarn的学习之2-容量调度器和预订系统