Hadoop2.X YARN模块基本认知--基于《Hadoop技术内幕深入解析YARN架构设计与实现原理》

  • Hadoop YARN 源码组织结构
  1. YARN API(对应hadoop-yarn-api目录):给出了YARN内部涉及的4个主要RPC协议的Java声明和Protocol Buffers定义
  2. YARN Common(hadoop-yarn-common):包含了YARN的底层库实现
  3. YARN Applications(hadoop-yarn-applications):包含了两个Application编程实例,分别是distributed shell和Unmanaged AM
  4. YARN Client(hadoop-yarn-client):封装了几个与YARN RPC协议交互相关的库,方便用户开发应用程序.
  5. YARN Server(hadoop-yarn-server):该部分给出了YARN的核心实现,包括ResourceManager,NodeManager,资源管理器等核心组件的实现
  • YARN 的基本设计思想

将Hadoop 1.0中JobTracker拆分成两个独立的服务,一个全局的资源管理器ResourceManager(RM)和每个应用独有的ApplicationMaster(AM).其中RM负责整个系统的资源管理和分配,而AM负责单个的应用程序的管理

  • YARN的基本组成
  • ResourceManager(RM)
    全局的资源管理器,负责整个系统的资源管理和分配,由调度器(ResourceScheduler)和应用管理器(Applications Master ,ASM)组成
  1. 调度器(ResourceScheduler)
    调度器根据容量,队列等限制条件,将系统中的资源分配给各个正在运行的应用程序.调度器不参与任何应用程序的具体工作,仅根据应用程序的资源需求进行资源分配.调度器是个可拔插的组件,用户可根据自己的需要设计新的调度器.
    2.应用程序管理器(ASM)
    应用程序管理器负责整个系统中所有应用程序,包括应用程序的提交,与调度器协商资源以启动ApplicationMaster(AM),监控AM运行状态并在失败时重启它
  • ApplicationMaster(AM)
    用户提交的每个应用程序均包含一个AM,主要功能包括:
    1.与RM调度器协商以获取资源
    2.将得到的资源进一步分配给内部的任务
    3.与NodeManager(NM)通信,以启动\停止任务
    4.监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务
    当前YARN自带两个AM实现:
    1.用于演示AM编写方法的实例程序distributedshell,它可以申请一定数目的Container以运行一个shell命令或shell脚本
    2.运行MapReduce应用程序的AM-MRAppMaster
  • NodeManager(NM)
    NM是每个节点上的资源和任务管理器.一方面,它会定时的向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动\停止等请求
  • Container
    YARN中的资源抽象,它封装了某个节点上的多维资源,当AM向RM申请资源时,RM为AM返回的资源便是使用Container表示的.YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源.Container是一个动态资源划分单位,是根据应用程序的需求动态生成的.
  • YARN 的通信协议
    YARN的通信协议使用RPC协议,该协议是远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.在YARN中,任何两个需要相互通信的组件之间仅有一个RPC协议,而对于任何一个RPC协议,通信双方有一端是Client,另一端是Server,且Client总是主动连接Server的,因此,YARN实际上采用的是拉式通信模型.YARN内部涉及主要的RPC协议,分别是ApplicationClientProtocol,ApplicationMasterProtocol,ContainerManagementProtocol,ResourceManagerAdministrationProtocol和ResourceTracker
  • ApplicationClientProtocol
    JobClient(作业提交客户端)与RM之间的协议,JobClient通过此RPC协议提交应用程序,查询应用程序
  • ApplicationMasterProtocol
    AM与RM之间的协议,AM通过该协议向RM注册和撤销自己,并为各个任务申请资源
  • ContainerManagementProtocol
    AM与NM之间的协议,AM通过该协议要求NM启动或停止Container,获取各个Container的使用状态等信息
  • ResourceManagerAdministrationProtocol
    Admin(管理员)与RM之间的通信协议,Admin通过该协议更新系统的配置文件,比如节点黑白名单,用户队列权限等
  • ResourceTracker
    NM与RM之间的协议,NM通过该协议向RM注册,并定时发送心跳信息汇报当前节点的资源使用情况和Container运行情况
Hadoop2.X YARN模块基本认知--基于《Hadoop技术内幕深入解析YARN架构设计与实现原理》_第1张图片
image.png
  • YARN的运行流程
Hadoop2.X YARN模块基本认知--基于《Hadoop技术内幕深入解析YARN架构设计与实现原理》_第2张图片
image.png

1.用户向YARN提交应用程序
2.RM(其中的调度器)为该应用程序分配第一个Container,(ASM)与对应的NM通信,要求它在这个Container中启动应用程序的AM
3.AM首先向RM(其中的ASM)注册,这样用户可以直接通过RM查看应用程序的运行状况,然后AM会为各个任务申请资源,并监控任务的运行状态直至任务完成,运行结束.在任务未完成时,4-7步是会循环运行的
4.AM采用轮询的方式通过RPC协议向RM(其中的调度器)申请和领取资源
5.AM申请到资源后与对应NM通信,要求启动任务
6.NM为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务.
7.各个任务通过RPC协议向AM汇报自己的状态和进度,让AM随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务
在应用程序运行过程中,用户可随时通过RPC向AM查询应用程序的当前状况
8.应用程序运行完成后,AM向RM注销并关闭自己

你可能感兴趣的:(Hadoop2.X YARN模块基本认知--基于《Hadoop技术内幕深入解析YARN架构设计与实现原理》)