• yarn


    1.1           yarn(分布式资源管理器)

    1.1.1     yarn是什么?

    yarn是MapReduce第二代,将jobtracker重构呈功能分离成单独的组件。Yarn可以看作一个集群操作系统,他为应用程序提供了基本的服务来更好的利用大的、动态的、并行的基础设施资源。用任何语言编写的应用程序都能顺利用任意规模的Hadoop集群的计算和存储资源。

    yarn是一种分层的集群架构,分层的本质是resourcemanager—RM。

    1. 控制整个集群并管理应用程序向基础计算资源分配;
    2. 将各资源(计算、内存、宽带等)进行安排给基础nodemanager(yarn的媒节点代理)

    1.1.2     yarn主要架构

    yarn由三个组件组成:ResourceManager(RM)、Applications Manager—ASM、NodeManager(NM)。

    1.1.2.1               ResourceManager

    ResourceManager(RM)是一个全局的资源管理器,负责整个系统的资源管理和分配,简称RM。

    RM构成:

    1. Scheduler--调度器:根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序,该调度器是一个可插拔的组件,用户可根据自己的需要设计新的调度器。
    2. Applications Manager--ASM 应用程序管理器:负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。

    1.1.2.2               ApplicationMaster

    ApplicationMaster是应用程序管理器,简称AM。

           AM是每个用户作业的主进程,负责管理作业生命周期,包括动态的增加或减少资源使用(container)、管理执行流程(map任务和reduce任务),处理故障和计算偏差以及执行其他的本地优化。

    AM的功能

    1.                  i.            与RM调度器协商以获取资源--用Container表示;
    2.                ii.            将得到的任务进一步分配给内部的任务(资源的二次分配);
    3.              iii.            与NM通信以执行和监控任务;
    4.               iv.            监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

    1.1.2.3               NodeManager(NM)

    NM是hadoop每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。

    1.1.2.4               Container

    Container(容器)是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,YARN会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。

    单个节点上可以有多个Container。系统中的每个节点可以认为是有内存和CPU的最小容量的多个

    Container组成。AM可以请求任何Container来占据最小容量的整数倍的资源。

    注释:Container是绑定到特定集群节点的一组资源逻辑组合,可以理解为一个容器。

    1.1.3     RM与NM的关系

    RM与NM通过心跳通信,RM与每个节点上的NM进程交互。NM负责本地资源的监控,故障报告以及container生命周期的管理(如启动和杀死作业)。RM依赖NM来维护集群的全局视图。

    在启动时,NM向RM注册,然后发送包含自身状态的心跳,并等待来自RM的指令。NM的主要目标是管理RM分配给他的应用Container。

    1.1.4     Yarn的作业流程

    AM与RM、NM是通过可扩展网络协议进行通信的,AM向RM发出资源请求(包括本地化偏好—HDFS的使用、container属性等),当一个资源被调度给一个AM时,RM为该资源生成一个租约,供AM通过心跳获取。Container通过特定协议与AM通信来报告状态和健康信息以及接受框架特定的指令。如下图所示yarn的作业流程

    客户端提交作业申请

    1. 客户端向ResourceManager(后续简称RM)提交作业申请。
    2. RM根据申请内容返回相关的信息(例如根据input的路径,返回对应的文件元数据,还有作业资源的提交路径)。
    3. 客户端根据RM返回的信息生成资源文件(job.split、job.xml、app.jar)并将资源文件提交至提交路径(一般存放在hdfs上)
    4. 资源文件提交完毕,向RM申请运行applicationMaster(后续简称AM)。

    2)RM处理用户请求

    RM将用户的请求打包为task,放置调度队列,根据当前yarn的调度模式进行调度(YARN提供的三种任务调度策略:FIFO Scheduler,Capacity Scheduler 和 Fair Scheduler)。

    3)NodeManager从队列中获取task。

    创建contianer容器启动AM和下载资源文件。

    4)AM向RM申请运行mapTask容器,RM将请求再打包为task放置调度队列。

    其它NM获取到task后会再创建contianer容器并下载资源文件,contianer中的mapTask任务由AM负责监控和调度。

    5)AM向maptask发送程序启动命令。

    6)contianer运行mapTask

    7)当各节点mapTask运行完毕后,AM重复4的步骤(这次申请运行reduceTask)。

    程序运行完成后,AM向RM注销自己。

    Hadoop1与Hadoop yarn的区别

  • 相关阅读:
    在类中声明常量
    PHPStudy配置虚拟主机配置域名步骤
    PHPStudy配置虚拟主机步骤
    2019年7月22日星期一,简单的总结一下
    简单的面向对象
    session和cookie
    Jquery 事件绑定 bind 与on 的区别
    php try catch用法
    include,include_once,require,require_once的区别
    require与 include区别
  • 原文地址:https://www.cnblogs.com/sdifens/p/11350814.html
Copyright © 2020-2023  润新知