yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,至关于一个分布式操做系统平台,而mapreduce等运算程序则至关于运行与操做系统之上的应用程序。yarn在hadoop2.x系列中被加入的资源管理器,取代hadoop1.x中的jobtracker,将资源管理与做业调度分离。web
2.一、yarn不须要清楚用户提交程序的运行机制。服务器
2.二、yarn只负责提供运算资源(为运算程序提供一个容器,容器的资源由yarn负责分配)。网络
2.三、yarn的实现是主从关系,主动角色为ResourceManager、被动角色为NodeManager负责提供运算资源。框架
2.四、yarn与用户进程彻底解耦,意味着yarn上能够运行各类类型的分布式运算程序,如mapreduce、storm、spark和tez等。因此经过yarn提供的接口一样能够实现本身的运算框架。分布式
2.五、yarn是一个通用的资源调度平台,今后,生产中存在各类运算集群均可以整合在一个物理集群上,提升资源利用率,方便数据共享。oop
3.1.ResourceManager ------>yarn的老大
3.2.NodeManager ------>yarn的小弟
3.3.ResourceManager调度器 a.默认调度器------>先进先出FIFO
b.公平调度器------>每一个任务都有执行的机会
......
3.4.心跳机制 ------>NodeManager可经过心跳机制将节点健康情况实时汇报给ResourceManager,而ResourceManager则会 根据每一个NodeManager的健康情况适当调整分配的任务数目。当NodeManager认为本身的健康情况“欠 佳”时,可以让 ResourceManager再也不分配任务,待健康情况好转时,再分配新任务。
3.5.NodeManager子进程------>独立于NodeManager,不在NodeManager内部spa
四、YARN框架流程操作系统
任何框架与YARN的结合,都必须遵循YARN的开发模式。在分析Spark on YARN的实现细节以前,有必要先分析一下YARN框架的一些基本原理。orm
Yarn框架的基本运行流程图为:blog
其中,ResourceManager负责将集群的资源分配给各个应用使用,而资源分配和调度的基本单位是Container,其中封装了机器资源,如内存、CPU、磁盘和网络等,每一个任务会被分配一个Container,该任务只能在该Container中执行,并使用该Container封装的资源。NodeManager是一个个的计算节点,主要负责启动Application所需的Container,监控资源(内存、CPU、磁盘和网络等)的使用状况并将之汇报给ResourceManager。ResourceManager与NodeManagers共同组成整个数据计算框架,ApplicationMaster与具体的Application相关,主要负责同ResourceManager协商以获取合适的Container,并跟踪这些Container的状态和监控其进度。
Yarn-Client模式中,Driver在客户端本地运行,这种模式可使得Spark Application和客户端进行交互,由于Driver在客户端,因此能够经过webUI访问Driver的状态,默认是http://hadoop1:4040访问,而YARN经过http:// hadoop1:8088访问。
YARN-client的工做流程分为如下几个步骤:
在YARN-Cluster模式中,当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序:第一个阶段是把Spark的Driver做为一个ApplicationMaster在YARN集群中先启动;第二个阶段是由ApplicationMaster建立应用程序,而后为它向ResourceManager申请资源,并启动Executor来运行Task,同时监控它的整个运行过程,直到运行完成。
YARN-cluster的工做流程分为如下几个步骤:
六、YARN-Client 与 YARN-Cluster 区别
理解YARN-Client和YARN-Cluster深层次的区别以前先清楚一个概念:Application Master。在YARN中,每一个Application实例都有一个ApplicationMaster进程,它是Application启动的第一个容器。它负责和ResourceManager打交道并请求资源,获取资源以后告诉NodeManager为其启动Container。从深层次的含义讲YARN-Cluster和YARN-Client模式的区别其实就是ApplicationMaster进程的区别。
YARN-Cluster模式下,Driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督做业的运行情况。当用户提交了做业以后,就能够关掉Client,做业会继续在YARN上运行,于是YARN-Cluster模式不适合运行交互类型的做业;
YARN-Client模式下,Application Master仅仅向YARN请求Executor,Client会和请求的Container通讯来调度他们工做,也就是说Client不能离开。