1. 什么是YARN
yarn(Yet Another Resource Negotiator,另一种资源协调者),是一种Hadoop资源管理器,可以作为底层应用(可以理解为大数据集群的统一管理者,类似于操作系统的概念)位上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
优点:
-
更加的多样化:yarn可以让Hadoop可以运行多种类型的应用程序
-
资源隔离盒多租户支持:Yarn支持在一个集群中运行多个应用程序,并能够对资源进行有效隔离,这样可以让多个团队共用同一个集群
-
支持更大规模的集群:Yarn能够管理成千上万个节点和作业
-
更灵活的作业调度:支持多种作业调度策略,如FIFO、容量调度器、公平调度器,还可以自定义调度器
1.1 Yarn的架构
Yarn有以下几个基础组件
1. ResourceManager(资源管理器):Yarn集群中的Master,主节点,负责整个集群中的资源分配和作业调度。
1.1 Scheduler :根据不同的任务需求,分配集群的计算资源给任务;决定任务的执行顺序;动态调整集群计算资源
1.2 ApplicationsManager :负责管理应用程序的生命周期,如接收客户端请求,创建ApplicationMaster,监控AM的状态,管理并记录日志
2. NodeManager(节点管理器):每个节点都运行一个NodeManager,用来管理该节点上的资源,并与RM进行通报情况
2.1 ApplicationMaster(应用程序管理器):每一个提交到Yarn集群的应用程序都有对应的AM,AM负责与RM协商资源、监控作业进度,并对RM请求更多资源或报告作业完成情况
2.2 Container(容器):容器是YARN中的基本执行单位,它包含了运行应用程序所需的计算资源、环境变量等信息。Container是一个动态的资源划分单位,它是根据实际提交的应用程序所需求的资源自动生成的,换句话说,Container其里边所描述的CPU、内存等资源是根据实际应用程序需求而变的。
Yarn上运行的应用程序
1.2 Yarn的优点
-
扩展性好:
hadoop的MRv1体系中由于是JobTracker承担了资源管理和作业控制,导致资源管理需要处理大量RPC请求,负载过大。
而Yarn中的资源管理有RM进行,作业控制由AM进行,AM位于NM上面,因此扩展性更好
-
可靠性好:
MRv1采用了Master/slave结构,Master存在单点故障问题,Yarn中RM可以使用Zookeeper实现高可用,RM将自己注册如Zookeeper中,如果活跃的RM遇到故障,会通过切换来继续为集群提供服务
-
资源利用率高:
MRv1基于曹伟的资源分配模型进行资源划分,通常一个任务不会用完曹伟对应的资源,且其他任务也无法使用这些资源(Hadoop将槽位分为Map Slot 和 Reduce Slot两种,且不允许他们之间共享。而Yarn可以通过Scheduler进行资源调度,有多种调度方法,最基础的资源调度单位为Container
-
支持多种计算框架
MRv1仅能基于MapReduce这种离线计算框架进行处理,而Yarn可以适配新型框架
2. Yarn的调用流程
2.1 作业处理全流程
(图片来源YARN框架和其工作原理流程介绍_绘制yarn组成结构,其中包含:rm(scheduler,applications manager)-CSDN博客)
-
Client与RM建立连接,提交应用程序
-
RM中的AM为该应用程序分配第一个Container,并与Container所在的NM进行通信,然后在该Container中启动对应的ApplicationMaster
-
ApplicationMaster向RM注册,用户可以通过RM查看到应用程序的运行状态,然后为该应用程序的各个任务申请资源,并监控运行状态
-
ApplicationMaster采用轮询的方式通过RPC协议向RM申请和领取资源
-
ApplicationMaster申请到资源后与对应的NM通信,在申请到的Container中创建任务
-
NM为要启动的任务配置号运行环境
-
任务通过RPC向ApplicationMaster进行汇报
-
ApplicationMaster在任务处理结束后向RM通信,注销和关闭自己
整个工作流程中NM和RM都通过心跳保持联系,AM使用GRP协议让NM启动或停止Container,并获取各个Container的使用状态