YARN原理与架构

张裕  论坛元老 | 2024-10-8 15:40:45 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1408|帖子 1408|积分 4224

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、YARN原理与组件构成

1.YARN概述

      YARN(Yet Another Resource Negotiator的缩写)是Hadoop中用于进行集群资源管理的重要组件。在大型集群中实现高效数据盘算的前提是,如何可以或许在成千上万个服务器间对集群资源进行整体分配和有效管理,集群资源重要包罗CPU焦点数、内存容量、硬盘容量和网络带宽等。YARN的出现让整体集群资源高效分配利用成为了可能,通过YARN可以对集群资源进行整体调理和管理。当集群接收盘算作业任务时,将以每个盘算作业任务为对象来为其分配集群资源; 盘算作业任务实行完毕后可以及时接纳集群资源。
      按Hadoop官网先容,YARN的根本设计思路是将集群盘算资源管理、盘算作业调理/监督分别为两个功能,分别交由两个相互独立的守护历程进行管理。
      为实现该思路需在集群中配置一个负责集群资源管理的全局资源管理器ResourceManager (RM) ,为每个盘算作业任务配置一个负责盘算作业任务调理/监督的独立的应用控制器ApplicationMaster (APP Mstr),此处的盘算作业任务既可以是单个作业,也可以是由多个作业构成的有向无环图(DAG of jobs)。

(1)YARN原理

      如下图所示,当Client向Hadoop集群发起盘算作业任务请求时,为可以或许顺遂完成该任务,集群需要为其分配合适的盘算资源。
      YARN在接收到盘算作业任务的资源请求时,ResourceManager负责根据集群资源近况为新任务分配资源,而Node Manager作为ResourceManager在节点(Node)上的署理,负责管理其所在节点的容器,监督容器资源(如CPU、内存、磁盘、网络)的利用情况,并定期向ResourceManager汇报相关信息。节点(Node)上的ApplicationMaster重要是负责根据盘算作业任务的资源需求向ResourceManager申请资源,并和Node Manager协同工作来实行和监督盘算作业任务的实行,而节点上的容器Container是实行盘算作业的根本单元。


(2)YARN的特点

      最初,Hadoop引入YARN是为了改善集群实行MapReduce任务时的资源分配效率题目,目前YARN已经发展成一个相对完整的集群资源管理工具。在应用层面,YARN具有一定的通用性,同样可以或许应用在其他分布式盘算模式,具有如下重要特点。


  • 分布式资源管理。YARN可以在集群中对整体资源进行有效管理。
  • 多框架支持。目前YARN不光支持MapReduce盘算模式,还支持其他分布式盘算模式,好比Spark、Flink等。
  • 灵活的资源调理。YARN可以或许根据应用的需求和集群的状态,进行动态的资源调理。
  • 高可靠性和容错性。当某个盘算节点实行失败时,YARN可以或许自动将该节点上的盘算任务重新分配给其他节点,保证任务可以或许正常运行完成。
  • 可扩展性。随着数据量和盘算作业任务需求的不停增长,运维工程师可以方便地增加更多的节点来扩展集群的规模。
  • 安全性。YARN提供了多种安全机制,确保数据和应用的安全,好比Kerberos认证、TLS/SSL加密、容器资源隔离等。
2.YARN整体架构

      YARN由一个资源管理器ResourceManager和多个节点管理器Node Manager组件构成。此中,ResourceManager是整个集群中拥有最高权限的全局决策者,负责响应Client的请求,按既定规则为盘算作业任务分配集群资源;而每个盘算节点(Node)上都会摆设Node Manager作为ResourceManager在该节点的署理,负责管理所在节点的容器(Container),监督容器各项资源(如CPU、内存、硬盘、网络)的利用情况,定期将收集到的信息汇报给ResourceManager。

      从整体架构上看,YARN属于Master-Slavers模型,重要依靠于两个组件相互配合来实现其资源管理功能:


  • ResourceManager是集群资源的管理者,属于Master脚色,包罗两个子组件:一个是支持可插拔策略的调理器Scheduler,一个是负责接收盘算作业任务并启动/监督应用控制器ApplicationMaster的应用管理器ApplicationsManager。 
  • NodeManager是ResourceManager在盘算节点上的署理,属于Slaver脚色,包罗两个子组件:一个是负责管理节点中具体盘算作业任务的应用控制器ApplicationMaster,一个是负责实行现实盘算作业任务的容器Container。
(1)ResourceManager
     资源管理器ResourceManager是集群中拥有最高权限的全局决策者,负责给集群中的全部应用程序分配资源,在接收到Client的盘算作业任务请求时按既定机制为该任务分配合适的集群资源。因此ResourceManager的重要职责在于资源调理,即ResourceManager会根据集群的可用资源、盘算作业的资源需求以及优先级等,为各个任务动态的分配资源,但ResourceManager并不负责每个盘算作业任务的状态管理。为实现集群资源的调理和有效管理,ResourceManager上的ApplicationsManager需要协同NodeManager和ApplicationMaster一起工作。整体来看,资源管理器ResourceManager的工作职责包罗如下五点:


  • 资源管理。ResourceManager负责整个集群的资源分配和管理。它维护了一个全局的资源池,并根据盘算作业任务的需求和优先级,动态地分配和调整资源。
  • 应用程序调理。ResourceManager负责盘算作业任务的调理。当盘算作业任务提交到集群时,ResourceManager会根据盘算作业任务的需求和集群的资源状态,为其分配相应的资源。
  • 应用程序监控。ResourceManager还负责监控盘算作业任务的运行状态。它会定期收集盘算作业任务的运行数据,并根据需要进行调整和优化。
  • 资源隔离。为了确保不同任务之间的资源隔离,ResourceManager会利用各种机制,如容器隔离、历程隔离等,来确保每个盘算作业任务都能独立运行,不受其他任务影响。
  • 负载均衡。ResourceManager还会负责负载均衡,确保集群中的资源得到充分利用。当某个节点的负载过高时,ResourceManager会根据负载情况,将该节点上的某些任务调理到其他负载较轻的节点上。
      为确保Hadoop集群的高效运行,为盘算作业任务提供稳固、可靠的资源支持,资源管理器ResourceManager的具体工作将交由调理器Scheduler和应用管理器ApplicationsManager两个组件负责。调理器Scheduler负责协调集群中各个作业的资源分配,保障整个集群的运行效率。应用管理器ApplicationsManager则负责向调理器申请合适的资源容器,并追踪和监督NodeManager中ApplicationMaster的状态。
Scheduler
      调理器Scheduler是一个支持可插拔策略的组件,负责为正在运行的作业任务分配资源。目前YARN提供三种调理器:先辈先出调理器(FIFO Scheduler)、容量调理器(Capacity Scheduler)和公平调理(Fair Scheduler)。需要强调的是,组件Scheduler只是一个纯粹的调理器,并不负责盘算作业任务状态的监督和追踪,而且它也不负责重启由于程序故障或硬件故障导致失败的盘算作业任务。调理器Scheduler是基于容器(Container)来实现集群资源调理的
ApplicationsManager
     应用管理器ApplicationsManager重要负责接收盘算作业任务请求,根据Scheduler分配的第一个容器(Container)来启动应用控制器ApplicationMaster,并监控ApplicationMaster的运行状态,在ApplicationMaster运行失败时重启。同样ApplicationsManager同样不负责具体盘算作业任务状态的监督和追踪,只是监督和追踪ApplicationMaster。
(2)NodeManager
      NodeManager是ResourceManager在盘算节点上的署理,负责管理各自所在节点的容器,监督容器资源(如CPU、内存、硬盘、网络等)的利用情况,定期将收集到的资源利用信息汇报给ResourceManager。
      NodeManager在启动时会向ResourceManager注册,然后定期向ResourceManager发送心跳包,让ResourceManager可以或许及时了解NodeManager的运行状态,等候来自ResourceManager的指令,此过程的重要目的是让ResourceManager可以或许及时高效的管理各个节点容器的利用情况。因此NodeManager只负责管理自身的容器(Container),并不关注运行在容器Container上的盘算作业任务的具体信息。为确保NodeManager们和ResourceManager可以或许高效的协同工作,各节点及其容器信息会不停被更新至ResourceManager,以保障整个集群可以或许随时发挥出最佳状态。简单来说,NodeManager的工作职责包罗如下几点。


  • 管理其所在的盘算节点,与ResourceManager保持通讯。
  • 管理容器Container的生命周期,包罗接收并实行来自ApplicationMaster的关于容器操作的命令,如启动、重启和停止等。
  • 监督每个容器Container的资源利用情况,如CPU、内存、硬盘和网络等。
  • 监督其所在盘算节点的康健状态,将监测到的信息汇报给ResourceManager,接收并实行来自ResourceManager的关于容器操作的命令,比方清理容器。
  • 管理日记以及不同作业任务用到的附属服务。
      NodeManager为实现以上工作职能,需要两个子组件相互协作。分别是负责管理盘算作业任务的应用控制器ApplicationMaster,和负责实行现实盘算作业任务的容器Container。
ApplicationMaster
      应用控制器ApplicationMaster作为盘算作业任务的管理者,负责根据盘算作业任务的资源需求与ResourceManager的Scheduler协商合适数目的容器Container,同时负责跟踪和监督任务的实行状态与运行进度。每个盘算作业任务都会有一个对应的ApplicationMaster,YARN在接收到盘算作业任务申请时,应用管理器ApplicationsManager与Scheduler协商第一个容器Container来运行ApplicationMaster。ApplicationMaster启动后与ResourceManager协商资源,与NodeManager协同工作来启动任务和监督任务实行过程的状态。
      ApplicationMaster运行过程中,将会定期向ResourceManager发送心跳报告来确认其康健状态和盘算作业任务的资源需求。ResourceManager会根据ApplicationMaster汇报的心跳报告来动态分配容器(Container),为ApplicationMaster绑定包罗一定数目的容器(Container)的租约,ApplicationMaster会根据其自身的实行计划来适应容器(Container)的不足或过剩,同样也会动态的申请或开释容器(Container)。
Container
      容器Container是YARN上一种关于资源的抽象概念。简单明白,容器就是一组集群资源的聚集,这里所说的资源重要包罗CPU和内存容量(日后可能会增加磁盘、网络、GPU等)。容器Container雷同虚拟软件VMware上的虚拟机,创建虚拟机时需要给虚拟机配置CPU的焦点数、内存的容量、硬盘的容量等。在盘算集群中,一个盘算节点可以运行多个容器,但一个容器只能存在于一个盘算节点中,即容器不能跨盘算节点存在。目前容器Container的状态重要是由NodeManager监督,而资源则受ResourceManager调理。
       容器Container是实行某个盘算作业任务(Task)的最小单元,比方MapReduce任务中的MapTask、ReduceTask都是在容器中运行。其实NodeManager的ApplicationMaster也是运行在容器上的,每个盘算作业任务从ApplicationMaster开始,ApplicationMaster启动后就会根据盘算作业任务的资源需求向ResourceManager申请更多的Container来完成该任务,在运行过程中会根据需求来动态申请或开释Container。
3.YARN与HDFS关系
     Hadoop作为一个开源的分布式盘算框架,用于处置惩罚和分析大规模数据集,为了可以或许提供可靠的、可扩展的分布式存储和盘算本事,使得开发职员可以或许轻松地处置惩罚PB级别的数据,离不开Hadoop的三大焦点组件包罗HDFS、YARN和MapReduce。


  • HDFS是一个分布式文件系统,被设计用于存储大规模的数据文件,可以运行在廉价的商用服务器上,通过增加节点进行水平扩展。HDFS包罗两个子组件:NameNode负责管理文件系统的元数据,如目次树、文件和目次的权限信息等;DataNode用于存储现实的数据块,并与NameNode进行通讯。
  • YARN是Hadoop的资源管理系统,负责集群资源的同一管理和调理。YARN包罗两个组件:ResourceManager负责集群全局资源的管理和调理,分配和监督Container的资源利用;NodeManager负责管理节点上的资源,启动和监督Container的运行状态。
  • MapReduce是Hadoop的编程模型,用于大规模数据集的并行运算。将数据处置惩罚任务分解成三个阶段:Map阶段、Shuffle阶段和Reduce阶段,有效提升大规模数据处置惩罚和分析的效率。
     综上可以发现YARN和HDFS是Hadoop生态系统中的两个重要组件,两个组件各自负责不同的功能。从Hadoop集群角度看,YARN与HDFS是相互配合利用,YARN负责管理分布式盘算资源,而HDFS负责存储海量数据。YARN可以在HDFS集群上运行,从而实现对盘算资源的同一管理和调理。而且YARN和HDFS之间会存在通讯接口,用于实现它们之间的信息交互和资源协调。从功能角度分析,YARN和HDFS之间存在明显的区别:1)YARN是Hadoop的资源管理系统,负责分配和管理集群的盘算资源;HDFS是一个分布式文件系统,用于存储海量数据。2)YARN和HDFS虽然同是接纳Master/Slave架构,但YARN的主节点ResourceManager负责全局的资源管理和调理,HDFS的主节点NameNode负责管理文件系统的元数据。3)YARN实用于运行各种分布式盘算任务(如MapReduce、Spark、Flink等),HDFS实用于存储大规模数据集并进行离线分析和处置惩罚


图3-4 YARN与HDFS
总的来说,YARN和HDFS是Hadoop生态系统中的两个重要组件,它们各自具有独特的功能和架构。YARN负责管理分布式盘算资源,而HDFS负责存储海量数据。它们相互依靠、协同工作,为大数据处置惩罚和分析提供了强大的支持。

4.YARN组件工作流程
     YARN作为Hadoop的资源管理系统,其重要功能是分配和管理集群的盘算资源。它负责接收来自客户端Client关于盘算作业任务的资源请求,并根据集群的当前状态和资源需求进行资源分配。据Hadoop官网先容,YARN的根本设计思路是将集群资源管理系统分别为多个相互独立的更小规模的功能组件,分别交由相互独立的守护历程进行管理。职责分明的功能组件相互配合,保障集群资源可以或许得到充分且高效的利用。为完成盘算作业任务,图3-5展示了YARN各组件间的工作流程。

  • 客户端Client向资源管理器ResourceManager提交盘算作业任务(job)请求,申请job id。
  • 资源管理器ResourceManager给客户端Client返回资源路径和job id,此处的资源路径重要用于存放实行job所需的各种资料,如Jar包、Configuration信息、InputSplit(数据分片信息)等。
  • 客户端Client将job所需的各种资料提交到资源管理器ResourceManager指定的资源路径。
  • 客户端Client向资源管理器ResourceManager发送实行job请求,资源管理器ResourceManager中的应用管理器ApplicationsManager负责接收提交过来的job信息。
  • 应用管理器ApplicationsManager将job的提交信息添加到调理器Scheduler中,由调理器Scheduler为该job安排空闲的盘算节点Node及容器Container。
  • 调理器Scheduler将空闲的盘算节点Node及容器Container的信息(如NodeId、ContainerId)关照应用管理器ApplicationsManager。
  • 应用管理器ApplicationsManager根据调理器Scheduler提供的信息找到相应节点,与该节点NodeManager协同开辟容器Container来启动该job的应用控制器ApplicationMaster。
  • 应用控制器ApplicationMaster从HDFS上(job资料路径)获取实行该job所需的各种资料,根据job相关的程序代码(如MapReduce的jar包)生成Task。
  • 应用控制器ApplicationMaster向资源管理器ResourceManager申请实行Task需要的容器Container。
  • 资源管理器ResourceManager的Scheduler将根据任务Task所需资源及当前集群资源利用情况,向空闲的盘算节点NodeManager分派任务Task,NodeManager负责创建用于实行任务Task的容器Container。
  • 应用控制器ApplicationMaster关照相关的盘算节点NodeManager启动实行Task。
  • NodeManager启动容器Container实行任务Task,应用控制器ApplicationMaster负责监督容器Container的实行状态和进度,任务实行完毕后应用控制器ApplicationMaster向资源管理器ResourceManager申请注销并关闭容器Container。


图3-5 YARN组件工作流程
为方便读者对YARN工作流程有更清晰的了解和认知,现将以上工作流程中各功能组件的工作职能整理如下表。
表3-6 YARN组件工作流程中职责说明



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表