当前位置: 首页 > 后端技术 > Java

【深入介绍Yarn架构及实现】1-1设计理念及基本架构

时间:2023-04-01 21:19:17 Java

1、Yarn生成Hadoop2的背景,之前由HDFS和MR组成,HDFS负责存储,MR负责计算.1)MRv1的问题耦合度高:MR中的jobTracker同时负责资源管理和作业控制两个??功能,并且相互制约。可靠性差:管理节点为单机,存在单点故障问题。资源利用率低:基于槽的资源分配模型。机器会将资源分成若干个大小相同的slot,并划定哪些是mapslot,哪些是reduceslot。无法支持多种计算框架:只能用于MapReduce程序。2)Yarn的诞生由于之前Hadoop资源调度存在的各种问题,一个新的资源调度框架——YARN(YetAnotherResourceNegotiator)诞生了。是一个通用的资源管理系统,可以为上层应用提供统一的资源管理和调度。它的引入为集群在利用率、资源统一管理、数据共享等方面带来了巨大的好处。2、Yarn的基本结构1)Yarn的三大组件ResourceManagerNodemanagerApplicationMaster在资源架构层面:RM为主,NM为从应用运行时:AM为主,容器为从1,主要是ResourceManagerResourceManager由两个组件组成:调度器(Scheduler)和应用程序管理器(ApplicationsManager,ASM)。调度器(Scheduler):根据容量、队列和其他约束条件(如每个队列分配一定数量的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。应用管理器(ApplicationsManager):负责管理整个系统中的所有应用,包括应用提交、与调度器协商资源启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动等。2.NodeManagerNodeManager是资源和每个节点上的任务管理器。定期向RM汇报节点上的资源使用情况和各个Container的运行状态;接收和处理来自AM的各种请求,例如Container启动/停止。3.ApplicationMasterApplicationMaster是一个容器,首先被一个任务启动,用于管理当前任务的调度。与RM调度器协商获取资源(以Container为代表);将获取到的任务进一步分配给内部任务;与NM通信以启动/停止任务;监控所有任务的运行状态,当任务失败时重新申请任务资源以重启任务。4.Container不属于Yarn的三大组件,而是yarn中对资源的抽象。在NM上封装资源(hadoop2只支持cpu和内存,hadoop3扩展了网络、硬盘、GPU等资源);与静态插槽不同,容器可以根据需要动态划分。2)Yarn通信协议通信协议有5种,如下图:在分布式环境中,需要涉及到跨机器、跨网络的通信,YARN底层使用RPC协议实现沟通。RPC是RemoteProcedureCall的缩写。基于RPC的远程调用就像本地调用一样。在RPC协议中,通信的一端是Client,另一端是Server,Client始终主动连接Server。因此,YARN实际上采用的是一种基于拉取的通信模型。3、Yarn工作流客户端向YARN提交应用,包括AM程序、启动AM的命令、用户程序等,RM为应用分配第一个Container,并与对应的NM通信,要求其启动应用的AM在这个容器中。AM先向RM注册,这样用户就可以通过RM直接查看应用的运行状态,然后会为每个任务申请资源并监控其运行状态,直到运行结束,即重复步骤4~7.AM通过RPC协议向RM申请和接收资源。——一旦AM申请了资源,就与对应的NM通信,要求其启动任务。NM为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写入脚本,通过运行脚本启动任务。每个task通过RPC协议向AM报告自己的状态和进度,这样AM就可以随时了解每个task的运行状态,以便在task失败时可以重新启动task。在应用运行过程中,用户可以随时通过RPC向AM查询应用当前的运行状态。应用程序完成运行后,AM注销到RM并自行关闭。