当前位置:网站首页>YARN笔记

YARN笔记

2022-06-22 18:03:00 QYHuiiQ

  • YARN(Yet Another Resource Negotiator),是一个通用的资源管理系统和调用平台。说它是通用的,是因为YARN不只是参与MapReduce任务的调度,也会参与Storm,Spark等其他服务中的资源调度。
  • YRAN主要负责集群中内存CPU等资源的管理以及应用程序申请资源时如何分配。HDFS主要负责磁盘上资源的管理。
  • YARN不关心申请资源的是什么应用程序,也不关心申请资源是用来做什么的,它只关心有应用程序申请资源,那么就要去帮助分配资源。
  • YARN的三大组件:ResourceManager、NodeManager、ApplicationMaster。
  • 官方架构图分析

在该架构图中,从机器角度来看,主要有两种角色:ResourceManager和NodeManager。

ResourceManager是通过yarn-site.xml中<name>yarn.resourcemanager.hostname</name>这个属性来配置的;而集群中的每个节点都会运行NodeManager这个角色。

应用程序角度来看,架构图中需要一种角色:ApplicationMaster(AppMstr),由于YARN是通用的,所以这个角色的名称也是统称,比如在MapReduce中这个角色就被称为MRAppMstr。AppMstr主要负责一个应用程序内部的管理职责,比如要管理map/reduce任务的执行状态等。每个应用程序在运行时都会有一个AppMstr来统领该应用程序的管理任务。

  • 机器中的不管是AppMstr,或者是mapTask、reduceTask等都是以容器的形式来运行的,这样是为了每台机器上运行多个应用程序时可以保证资源的相互隔离互不干扰,运行完就会释放容器,并回收资源。
  • ResourceManager:是整个集群中资源分配的顶级角色,决定着集群中所有应用程序之间的资源分配;主要用于接受用户提交的作业,并通过NodeManager来分配和管理各个节点上的计算资源。
  • ResourceScheduler:是ResourceManager的内部组件之一,ResourceManager分配资源就是通过ResourceScheduler来实现的。
  • NodeManager:运行在每个节点上,主要负责管理本台机器上的资源使用情况,比如启动容器、释放容器、回收资源等;向ResourceManager汇报自己所有的资源、已使用的资源等,并接收ResourceManager为其分配的指令。
  • ApplicationMaster:伴随应用程序的执行而出现。只有当客户端提交了应用程序时,该应用程序才会对应运行一个AppMstr,否则如果没有应用程序时,也就不会有AppMstr。它是应用程序内部的leader,掌管着该应用程序内部的一些资源管理及任务执行。当一个应用程序提交时,最先运行的进程就是AppMstr进程。
  • 作业提交运行的大致流程:
  1. 客户端提交作业,YARN中会连接到ResourceManager。
  2. 提交作业后,YARN会找到一个机器上的空闲容器并要求该NodeManager运行AppMstr(最先运行的程序是AppMstr),运行起来AppMstr后,AppMstr会向ResourceManager注册并保持通信,这样我们才可以在控制台上看到该应用程序的任务执行情况,比如执行了百分之多少了。然后AppMstr根据自己的应用程序中任务情况(比如mapTask、reduceTask等任务)向ResourceManager申请资源,并监控这些任务的执行情况。
  3. 当AppMstr申请到资源后,会要求对应的各个NodeManager去启动容器执行任务。
  4. 一个应用程序中的多个任务可能是在多个节点上的多个容器中运行的,所以这些容器需要向AppMstr汇报自己的执行情况。比如在MapReduce中,mapTask/reduceTask等多个容器都需要向AppMstr容器汇报情况。各个任务是通过RPC协议汇报状态的,而用户也是通过RPC协议向AppMstr查询当前应用程序的执行情况。
  5. NodeManager定期向ResourceManager汇报自己本台节点上的资源使用情况及任务执行情况。
  6. 当应用程序执行完毕后,AppMstr会向ResourceManager注销自己并释放容器。
  • YARN中的三种调度器:FIFO Scheduler、Capacity Scheduler、Fair Scheduler。默认使用Capacity Scheduler,也可以通过修改yarn-site.xml中的<name>yarn.resourcemanager.scheduler.class</name>来配置其他的调度器。

原网站

版权声明
本文为[QYHuiiQ]所创,转载请带上原文链接,感谢
https://blog.csdn.net/QYHuiiQ/article/details/125395965