--- layout: post title: YARN架构简述 category: 技术 tags: Hadoop keywords: description: YARN架构简述 --- {:toc} ## 架构 YARN的基本思想是将资源的管理功能和Job调度/监控的功能切分到两个守护进程中。 该思想是为了有一个全局的资源管理器(RM)和每个应用的ApplicationMaster(AM)。应用要么是单任务,要么是DAG的任务序列。 资源管理器(RM)和节点管理器(NM)构成了数据计算的框架。RM是整个系统资源的最终仲裁者。 NM是每个机器上负责容器,监控他们的资源(cpu、内存、磁盘、网络)使用并且将这些资源报告给RM/调度者的框架代理。 实际上,每个应用的AM是框架的具体库,从RM处谈判获取资源并使用NM执行和监控任务。 ![yarn架构图](//raw.githubusercontent.com/George5814/blog-pic/master/image/hadoop/yarn_architecture.gif) RM有两个主要的组件:Scheduler和ApplicationsManager。 Scheduler负责给多种运行的应用项目分配资源,常见的容量、队列约束等等。 在该场景中Scheduler只是单纯的调度器,它不会监控或跟踪应用的状态,并且也不保证重启失败的任务,不管是因为应用故障还是硬件故障。 Scheduler基于应用对资源的需求执行它的调度功能,也会基于资源容器(由内存,CPU,磁盘和网络组成)的抽象概念 Scheduler有一个负责在多种队列,应用间分隔集群资源的可插拔的策略。当前的调度器,CapacityScheduler和FairScheduler会有一些插件的例子。 ApplicationsManager 负责接收Job提交,为执行特定应用的ApplicationMaster仲裁第一个容器并且为失效后重启ApplicationMaster容器提供服务。 每个应用的ApplicationMaster负责跟Scheduler谈判适当的资源容器,跟踪他们的状态并监控进程。 Hadoop2.x中Mapreduce维持了API兼容以前的版本(hadoop1.x),这意味着所有的Mapreduce仅仅重新编译后就能运行在YARN上。