剖析Yarn框架

来源:互联网 发布:json 汉字 编辑:程序博客网 时间:2024/06/07 01:03

大数据现在越来越火,各种计算框架不断出现,比如内存计算框架(Spark)、流式计算框架(Storm)、迭代式计算框架(iMapReduce)等新型计算框架的出现,经典MR计算框架(MRv1)的局限性日益突出。比如拓展性,不支持部分计算框架,即使支持,操作起来也很复杂,还有资源利用率比较低等等问题。 
2010年牛逼雅虎团队设计出也新的框架—-YARN(MRv2)。全名Yet Another Resource Negotiator.一个多种计算框架通用的资源调度体系,为不同的并行化计算提供资源分配服务。这样,YARN支持的计算框架只要实现YARN定义的接口,便可以运行在YARN之上,从而很好地打造一个以YARN为核心的生态系统。

YARN基本设计思想是将原MapReduce架构中JobTracker的两个主要功能,即资源管理和作业调度/监控分成两个独立组件,全局的ResourceManager和与每个应用相关的ApplicationMaster。

1,YARN框架组成 
这里写图片描述

如上图所示 
YARN主要由Resource Manager、NodeManager、ApplicationMaster和Container等四个组件构成。 
ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。用户提交应用程序时,需要提供一个跟踪和管理这 
个程序的应用程序主控节点(ApplicationMaster),由它 
向ResourceManager申请资源,并要求NodeManager按ApplicationMaster申请到的Container资源信息来启动任务。

感觉YARN和操作系统有点相似,操作系统也是为每个应用创建一个进程,然后操作系统分配资源,这进程对该应用的所有资源进行管理。可以简单地理解为下图,各个计算框架都可以运行在YARN上,并由YARN协调管理 
这里写图片描述

YARN框架各组件功能 
1,ResourceManager:有两个主要组件:Scheduler和ApplicationsManager构成。 
Scheduler:调度程序负责将资源分配给各种运行的应用程序,调度器是纯粹的调度器,因为它不执行应用程序的状态监视或跟踪。同时,它不能保证重新启动由于应用程序失败或硬件故障失败的任务。调度程序根据应用程序的资源需求执行调度功能。它基于一个资源容器的抽象概念,它包含了内存、cpu、磁盘、网络等元素。 
ApplicationsManager:一个应用程序管理器,它负责整个系统中应用程序的启动和关闭、访问权限、资源使用期限等

2,ApplicationMaster 
用户提交的每个应用程序均包含一个应用程序主控节点AM,负责跟踪和管理应用程序,主要负责: 
(1)与RM的资源调度器协商以获取资源; 
(2)将得到的资源分配给内部任务; 
(3)与NM通信以启动/停止任务; 
(4)监控所有任务运行状态,并在任务运行失败时重新运行任务。

3,NodeManager 
负责每个节点上资源和任务的管理,主要负责: 
(1)定时向RM汇报本节点上的资源使用情况和各个Container的运行状态; 
(2)接收并处理来自AM的Container启动/停止等请求。

4,Container 
一个资源容器的抽象概念。容器是动态资源(内存、CPU、磁盘、网络等)的分配单位,负责封装某个节点上的资源,当AM向RM申请资源时,RM为AM返回的资源以Container表示。