本节书摘来华章计算机《Hadoop与大数据挖掘》一书中的第2章 ,第2.1.4节,张良均 樊 哲 位文超 刘名军 许国杰 周 龙 焦正升 著 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.1.4 Hadoop资源管理—YARN
在上一节中我们看到,当MapReduce发展到2.x时就不使用JobTracker来作为自己的资源管理框架,而选择使用YARN。这里需要说明的是,如果使用JobTracker来作为Hadoop集群的资源管理框架的话,那么除了MapReduce任务以外,不能够运行其他任务。也就是说,如果我们集群的MapReduce任务并没有那么饱满的话,集群资源等于是白白浪费的。所以提出了另外的一个资源管理架构YARN(Yet Another Resource Manager)。这里需要注意,YARN不是JobTracker的简单升级,而是“大换血”。同时Hadoop 2.X也包含了此架构。Apache Hadoop 2.X项目包含以下模块。
- Hadoop Common:为Hadoop其他模块提供支持的基础模块。
- HDFS: Hadoop:分布式文件系统。
- YARN:任务分配和集群资源管理框架。
MapReduce:并行和可扩展的用于处理大数据的模式。
如图2-10所示,YARN资源管理框架包括ResourceManager(资源管理器)、Applica-tionMaster、NodeManager(节点管理器)。各个组件描述如下。
(1)ResourceManager
ResourceManager是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(ApplicationManager,AM)。
Scheduler负责分配最少但满足Application运行所需的资源量给Application。Scheduler只是基于资源的使用情况进行调度,并不负责监视/跟踪Application的状态,当然也不会处理失败的Task。
ApplicationManager负责处理客户端提交的Job以及协商第一个Container以供App-licationMaster运行,并且在ApplicationMaster失败的时候会重新启动ApplicationMaster(YARN中使用Resource Container概念来管理集群的资源,Resource Container是资源的抽象,每个Container包括一定的内存、IO、网络等资源)。
(2)ApplicationMaster
ApplicatonMaster是一个框架特殊的库,每个Application有一个ApplicationMaster,主要管理和监控部署在YARN集群上的各种应用。
(3)NodeManager
主要负责启动Resourcemanager分配给ApplicationMaster的Container,并且会监视Container的运行情况。在启动Container的时候,NodeManager会设置一些必要的环境变量以及相关文件;当所有准备工作做好后,才会启动该Container。启动后,NodeManager会周期性地监视该Container运行占用的资源情况,若是超过了该Container所声明的资源量,则会kill掉该Container所代表的进程。
如图2-11所示,该集群上有两个任务(对应Node2、Node6上面的AM),并且Node2上面的任务运行有4个Container来执行任务;而Node6上面的任务则有2个Container来执行任务。