1.YARN产生的原因
在Hadoop1.0中如果使用JobTracke作为资源管理器,那么除了MapReduce任务外,不能够运行其他任务。也就是说如果集群的MapReduce任务没有饱满,集群资源等于白白的浪费,从而YARN能成功解决这个问题。
2.什么是YARN?
YARN是hadoop 2.X提出的,是任务分配和集群资源管理框架。
YARN的资源管理框架包括ResourceManager(资源管理器),ApplicationMaster,NodeManager(节点管理器)。
3.YARN的架构
YARN在MR2中的架构如图所示
(1)ResourceManager
ResourceManager是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationManager,AM)。
Scheduler负责分配最少但满足Application运行所需的资源量给Application。Scheduler只是基于资源的使用情况进行调度,并不负责监视/跟踪Application的状态,也不会处理失败的Task。
ApplicationManager 负责处理客户端提交的Job以及协商第一个Container以供ApplicationMaster运行,并且在ApplicationMaster失败的时候会重新启动ApplicationMaster(YARN中使用Resource Container概念来管理集群资源,Resource Container是资源的抽象,每个Container包括一定的内存,IO,网络等资源)。
(2)ApplicationMaster
ApplicationMaster是一个框架特殊的库,每个Application有一个ApplicationMaster,负责应用程序相关的事务,比如任务调度、任务监控和容错等。
(3)NodeManager
主要负责启动ResourceManager分配给ApplicationMaster的Container,并且会监视Container的运行情况。
在启动Container的时候NodeManager会设置一些必要的环境变量以及相关文件,当所有准备工作做好后,才会启动该Container。
启动后,NodeManager会周期性地监视该Container运行占用的资源情况,若是超过了该Container所声明的资源量,则会kill掉该Container所代表的进程。
目前多个计算框架可以运行在YARN 上,比如MapReduce、Spark 、Storm等。