1.Yarn产生背景
(1)MapReduce1.X存在的问题,主节点承担风险。
(2)资源利用率和运维成本,多种集群无法整合,导致资源利用率和运维成本高。
集群内的所有资源管理,全部又YARN完成。
2.YARN的架构
(1)由一个Resource Manager和N个Node Manager构成。
一个集群active状态的Resource Manager只有一个,负责整个集群的资源管理和调度。
它可以:1)处理客户端的请求;2)启动/监控App Mstr(一个作业对应一个App Mstr);3)通过心跳监控Node Mangaer;4)系统的资源分配和调度
整个集群有N个Node Manager,它负责单个节点的资源管理和使用以及task的运行情况。
它可以:1)定期向Resource Manager汇报本节点的资源使用请求和各个Container的运行状态;2)接收并处理Resource Manager的container启停的各种命令;3)单个节点的资源管理和任务管理
每个应用/作业对应一个App Mstr,负责应用程序的管理。
它可以:1)数据的切分;2)为应用程序向Resource Manager申请资源(container),并分配给内部任务;3)与Node Manager通信以启停task,task是运行在container中的;4)task的监控和容错。
Container是对任务运行情况的描述:cpu、memory、环境变量等。
(2)Yarn的执行流程
1)用户向Yarn提交作业;2)Resource Manager为该作业分配第一个container(App Mstr);3)Resource Manager会与对应的Node Manager通信,要求Node Manager在这个container上启动应用程序的App Mstr;4)App Mstr首先向Resource Manager注册,然后App Mstr将为各个task申请资源,并监控运行情况;5)App Mstr采用轮询的方式通过RPC协议向Resource Manager申请和领取资源;6)App Mstr申请到资源以后,便和相应的Node Manager通信,要求Node Manager启动任务;7)Node Manager启动我们作业的task。