今天继续为大家带来Yarn的知识,都知道细节决定成败,我们在工作中更是格外注意细节问题,一不小心的错误可能都让整个编程运行失败。因此细节知识我们可不能落下,下面就开始本期大数据开发的学习。 一、Yarn基本架构 Yarn在整体上看还是采用了和Hadoop1。x一样的MasterSlave结构(横向扩展混杂SlaveSlave结构),在整个Yarn资源管理系统当中,ResourceManager作为Master,各个节点的NodeManager作为Slave。各个节点上NodeManager的资源由ResourceManager统计进行管理和调度。当应用程序提交后,会有一个单独的Application来对该应用程序进行跟踪和管理,同时该Application还会为该应用程序想Resource申请资源,并要求NodeManager启动该应用程序占用一定资源的任务。下图主要以MR和MPI这两种应用来描述Yarn运行的基本架构: 二、组件基本介绍 1、ResourceManager ResourceManager是Yarn的核心组件,主要由任务调度器(YarnScheduler)和应用程序管理器(ApplicationsManager)组成。其主要功能是负责系统资源的管理和分配。 任务调度器(YarnScheduler) 任务调度器根据系统资源容量以及管理员对队列的限制条件,按照一定的策略将资源分配给正在运行的应用程序。另外,任务调度器和Hadoop1。x一样也是一个热插拔模块,你可以自定义自己的任务调度器,同样你也可以直接使用其他任务调度器,如,FairScheduler或者CapacityScheduler。 应用程序管理器(ApplicationsManager) 应用程序管理器,负责管理整个系统中所有应用程序,包括应用程序提交、向任务调度器申请资源启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它。 ResourceManager中还包含了其他组件,如ResourceTrackerService用来直接处理心跳,NMLivelinessMonitor用来监控NodeManager,NodesListManager提供NodeManager的黑白名单等等。 2、ApplicationMaster(AM) 每当用户提交了一个应用程序就会为这个应用程序产生一个对应的ApplicationMaster,并且这个这个单独进程是在其中一个子节点上运行的。它的主要功能:为应用向ResourceManager申请资源、在job对Task实行调度、与NodeManager通信以启动或者停止任务、监控所有任务的运行情况,并且在任务失败的情下,重新为任务申请资源并且重启任务、负责推测任务的执行、当ApplicationMaster向ResourceManager注册后,ApplicationMaster可以提供客户端查询作业进度信息等。 3、NodeManager(NM) NM是每个子节点上的资源和任务管理器,一方面,它会定向通过心跳信息向RM汇报本节点上的资源使用情况和各个Container的运行情况;另一方面,它会接收并且处理来自AM的Container启动和停止的各种请求。它的能有点像Hadoop1。x中的TaskTracker。 4、Container Container是Yarn中对系统资源的抽象,同时它也是系统资源分配的基本单位,它封装节点上多维度资源,其中包括CPU、内存、磁盘、网络等。Yarn会为每个任务分配一个Container,并且该任务只能够使用该Container中所描述的资源。值得关注的的是,Yarn中的Container和MRv1中的Slot是完全不同的,Container是一个动态的资源划分单位,它是根据实际提交的应用程序所需求的资源自动生成的,换句话说,Container其里边所描述的CPU、内存等资源是根据实际应用程序需求而变的。而Slot是一个静态的资源抽象单位,每一个同类型的Slot所描述的资源信息都是一样的。 三、工作流程 1。用户向Yarn中提交一个MR(MapReduce)任务,由ResourceManager中的ApplicationsManager接收 2。ApplicationsManager负责资源的分配,根据任务计算出所需要的资源,如cpu资源和内存资源,将这些资源封装成Container 3。ApplicationsManager将任务和Container发送给ResourceScheduler(资源调度器) 4。ResourceScheduler将任务和Container分配给ApplicationMaster,由ApplicationMaster进行二次划分,将任务分解成MapTask和ReduceTask 5。ApplicationMaster将MapTask和ReduceTask分配给NodeManager,三个NodeManager随机接收到MapTask或者ReduceTask,由NodeManager负责任务的执行 6。ApplicationMaster会对NodeManager的任务完成情况进行监控,而ApplicationsManager会对NodeManager的任务资源使用情况进行监控。 7。如果NodeManager上的任务执行成功,会把成功信息发送给ApplicationMaster和ApplicationsManager,然后ApplicationsManager会进行资源的回收。 8。如果NodeManager上的任务执行失败,会把失败信息发送给ApplicationMaster和ApplicationsManager,然后ApplicationsManager仍然会进行资源的回收。此时ApplicationMaster会向ApplicationsManager申请资源,重新将这个任务分配给这个NodeManager,循环往复,直到任务执行成功。 以上就是本期的所有内容了,大数据开发的内容学习量是比较大的,因此大家要把握还自己的学习计划,不要因为省力而忽略掉细节。 希望大家点个关注,及时收取最新文章推送,想了解更多敬请咨询加米谷大数据。 有问题的欢迎在评论区留言,如有侵权请告知。