zoukankan      html  css  js  c++  java
  • Yarn简介

    Yarn的概述

    YARN 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,是 Hadoop2.x 版本中的一个新特性。

     Yarn中的角色

    Yarn也是主从结构,主要由ResourceManager、NodeManager、 ApplicationMaster和Container等几个组件构成。

    ResourceManager 是根据任务的需要对集群资源的需求进行调度的 YARN 集群主控节点,负责协调和管理整个集群(所有 NodeManager)的资源。

    NodeManager 是 YARN 集群当中真正资源的提供者,是真正执行应用程序的容器的提供者, 监控应用程序的资源使用情况(CPU,内存,硬盘,网络),并通过心跳向集群资源调度器 ResourceManager 进行汇报以更新自己的健康状态。同时其也会监督 Container 的生命周期管理,监控每个 Container的资源使用(内存、CPU 等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务(auxiliary service)。

    AppMaster 对应一个应用程序,职责是:向资源调度器申请执行任务的资源容器,运行 任务,监控整个任务的执行,跟踪整个任务的状态,处理任务失败以异常情况。

    Container 容器是一个抽象出来的逻辑资源单位。容器是由 ResourceManager Scheduler 服务动态分配的资源构成,它包括了该节点上的一定量 CPU,内存,磁盘,网络等信息,MapReduce 程序的所有 Task 都是在一个容器里执行完成的,容器的大小是可以动态调整的。Container是Yarn对计算机计算资源的抽象,它其实就是一组CPU和内存资源,所有的应用都会运行在Container中。

     简单点来说:

    1. 客户端(Client):向整个集群提交MapReduce作业。
    2. YARN资源管理器(ResourceManager):负责调度整个集群的计算资源。
    3. YARN节点管理器(NodeManager):在集群的机器上启动以及监控container。
    4. MapReduce应用管理器(MRAppMaster): 调度某个作业的所有任务. 应用管理器和任务运行在container中, container由资源管理器调度, 由节点管理器管理。

     Yarn资源调度流程

             RM == ResourceManager   NM == NodeManager

    1. 客户端将它的程序提交给Yarn。
    2. RM会给客户端返回一个jobid以及一个路径。
    3. 客户端会将对应的程序信息(jar包、切片信息、序列化文件)提交到对应的路径下。
    4. 提交完以后给RM返回一个确认。
    5. RM就会在存放提交信息的那台NodeManager上创建出来一个容器。启动我们的ApplicationMaster。
    6. ApplicationMaster会跟提交的切片信息和程序向RM注册,并申请容器。
    7. RM收到资源请求后,就去跟NM通信,NM就会在自身的节点上创建出需要的容器数量。
    8. ApplicationMaster就将相应的任务信息,发送到对应的NM节点上,并使用创建出来的container去运行Task。
    9. 运行ReduceTask。
    10. 等所有的Task都执行完以后,ApplicationMaster就向RM进行注销,RM就会回收资源。

    注意:applicationmaster将监听每一个nodemanager执行的情况并随时汇报给resourcemanager,知道最后任务执行完成,将回收所有的资源,如果发现有任务执行失败,则由applicationmaster来协调,减轻了resourcemanager的负担,如果applicationmaster在运行过程中出问题,resourcemanager没有接收心跳后,会再在所有nodemanager节点中选择一个节点来启动applicationmaster来继续工作。

    努力到无能为力,拼搏到感动自己
  • 相关阅读:
    集合类源码(六)Map(HashMap, Hashtable, LinkedHashMap, WeakHashMap)
    CycleBarrier与CountDownLatch原理
    Volatile和Synchronized
    集合类源码(五)Collection之BlockingQueue(LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue)
    集合类源码(三)Collection之List(CopyOnWriteArrayList, Stack)
    集合类源码(二)Collection之List(ArrayList, LinkedList, Vector)
    集合类源码(一)概述
    Java ReentrantLock中tryLock与lock的区别(非公平锁与公平锁)
    Arctime制作视频字幕教程
    用Pr对视频画面进行裁剪
  • 原文地址:https://www.cnblogs.com/tkzm/p/11430395.html
Copyright © 2011-2022 走看看