yarn是一个资源调度系统,也可以视为一个在hadoop2.0平台上的插件系统,在HDFS的基础上,可以在yarn上运行多个计算框架,例如spark、sparksteaming、flink、MR等。
一、yarn的核心
RM(resource manager)的职责:
1.除了客户端的请求,接受JobSubmitter提交的作业(按照作业的上下文(Context))信息run.sh提交的参数,以及从NM(nodemanager)收集来的状态信息),启动调度过程,分配一个container作为APP master
2.RM作为中心服务,拥有系统中所有应用的资源分配决定权,其工作是调度、启动每一个job所属的application、监控application的存在情况
3.通过心跳通信,达到监控NM(nodemanager)
4.RM有一个纯碎的调度器组件scheduler
NM(nodemanager)的职责:
1.是slave进程,是每台机器的框架代理
2.处理来自RM的任务请求
3.接受处理来自AM(application master)的container的启动、停止请求
4.启动应用程序的container,并监控资源使用情况,并报告给RM
AM(application master)的职责:
1.应用程序的master,每一个应用对应一个AM,在用户提交一个应用程序时,一个AM的轻量型进程实力会启动,AM会协调这个应用程序内的所有任务的执行
2.负责一个job任务生命周期内的所有工作
3.每一个job都有一个AM,运行在RM机器之外的机器上
4.和NM协同工作,与RM的scheduler协商合适的container,并监控
container:
1.container(进程需要的资源cpu,内存,io)是进程
在mapreduce中container作为一个map task或者是一个reduce task
在spark container 可以同时拥有map task(线程)+reduce task(线程)
二、yarn的运行过程
1.client端提交一个任务请求给RM,RM运行之
2.RM选择一个NM启动container,运行application master
3.AM向RM请求适合的container来运行请求
4.AM通过请求获得更多的container来运行作业
三、高可用
1.RM挂掉:通过zookeeper设置备用RM,所谓高可用,当前RM挂掉,备用RM上位(机器要单数,zookeeper才可保证有一台被选主)
2.AM挂掉:通知RM,RM重启挂掉的AM,AM上有个RM applicationmanager,记录着AM的任务记录,已经完成的application不会重复
3.NM挂掉:不止一个,当一个挂掉,会通过心跳方式通知RM,RM知会AM,做进一步处理