YARN

2019/01/28 14:55
阅读数 164

YARN

概述:
是hadoop2.x版本引入的资源管理系统
直接从MR1演化而来
新的hadoop资源管理器,通用的资源管理器
可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率,资源统一管理和数据共享等方面带来了巨大的好处
核心思想:
将MapReduce1中的JobTracker的资源管理和作业调度两个功能分开,分别由
ResourceManager和ApplicationMaster进程来实现
ResourceManager:负责整个集群的资源管理和调度
ApplicationMaster:负责应用程序相关的事务,比如任务调度,任务监控和容错等

YARN的出现可以使得多个计算框架运行在一个集群当中
每个应用程序对应一个ApplicatonMaster
目前可以支持多种计算框架运行在YARN上,比如MapReduce,Strom,Spark,Flink,


YARN与MapReduce关系:

 


YARN是一个资源管理系统,负责资源管理和调度
MapReduce只是运行在YARN上的一个应用程序
如果把YARN看作androd,则mapreduce只是一个app
mapreduce1.0是一个独立系统,直接运行在linux上
mapreduce2.0则是运行在YARN上的框架,且可以与多种框架一起运行在YARN上

 

YARN 系统架构:

 

ResourceManager
负责集群中所有资源的统一管理和分配,它接受来自各个节点的NodeManager的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序,是整个YARN集群中最重要的组件之一,他的设计直接决定了系统的可扩展性,可用性和容错性,它的功能较多,包括ApplicationMaster管理,NodeManager管理,Application管理,状态机管理等


主要有以下几个功能:
1.与客户端交互,处理来自客户端的请求
2.启动和管理ApplicationMaster,
并且在它失败时重新启动它
3.管理NodeManager,接受来自NodeManager的资源汇报信息,下达管理指令
4.资源管理和调度,接受来自ApplicationMaster的资源申请请求并向让NodeManager为之分配资源

 


Nodemanager
是运行在单个节点上的代理,管理hadoop集群中单个计算节点,他需要与相应用程序的ApplicationMaster和集群管理者ResourceManager交互
1.从ApplicationMaster上接收有关Contioner的命令并执行
2.向ResourceManager汇报各个container运行状态和节点健康状况,并领取有关的Container的命令并执行


ApplicationMaster
与应用程序相关的组件
1.负责数据切分,把每份数据分配给对应的Map Task
2.为应用程序申请资源并进一步分配给内部的任务。比如从ResourceManager获取分配的资源,然后分配给Task任务
3.任务的监控与容错。一旦一个任务挂掉之后,他可以重新向ResourceManager申请资源


Container
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存,CPU,磁盘,网络等。当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。
YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。需要注意的是,Container不同于MR(mapreduce)v1中的slot(也是资源分配单位),他是一个动态资源划分单位,是根据应用程序的需求动态生成的

 

MapReduce on YARN

 

运行在YARN上的应用程序分为两类:短应用程序和长应用程序
短应用程序:是指在一定时间内可以运行完成并正常退出的应用程序,不如MapReduce作业 离线计算
长应用程序:
是指不出意外,永不停止的应用程序,通常是一些服务
比如Strom Service(主要包括Nimbus和Supervisor两类服务)
HBase Service(包括Hmaste:和RegionServer两类服务)等,而他们本身作为一个框架提供了编程接口供用户使用 spark 实时计算
当用户向YARN中提交一个应用程序后,YARN将分为两个阶段运行该应用程序:
第一个阶段是启动ApplicationMaster
第二个阶段是由ApplicationMater创建应用程序,,为它申请资源,并监控它的整个运行过程,直到运行完成

YARN 高可用:

 

yarn里面的zkfc和ResourceManager是在一块的 不同于HDFS

MasterHADaemon:与Master服务运行在同一个进程中,可以接收外部RPC命令,以控制Master服务的启动和停止

SharedStorage共享存储系统,Active Master将信息写入共享存储系统,而Standby Master则读取该信息以保持与Active Master的同步

ZKFailoverController:基于Zookeeper实现的切换控制器,主要由ActiveStandbyElector和HealthMonitor两个核心组件构成。
ActiveStandbyElector:负责与Zookeeper集群交互通过尝试获取全局锁,以判断所管理的Master是进入Active还是进入Standby状态
HealthMonitor:监控各个活动Master的状态,以根据他们的状态进行状态切换
Zookeeper:核心功能是通过维护一把全局锁控制整个集群有且仅有一个Active Master。当然,如果Sharedstorge采用了Zookeeper,则还会记录一些其他状态和运行时信息。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部