美文网首页我爱编程
hadoop-初识六(YARN)

hadoop-初识六(YARN)

作者: 刘子栋 | 来源:发表于2018-05-27 14:32 被阅读0次

参考博客(理解Hadoop YARN架构 - CSDN博客

1、YARN介绍

        YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度。其核心出发点是为了分离资源管理与作业调度/监控,实现分离的做法是拥有一个全局的资源管理器(ResourceManager,RM),以及每个应用程序对应一个的应用管理器(ApplicationMaster,AM),应用程序由一个作业(Job)或者Job的有向无环图(DAG)组成。

        YARN可以将多种计算框架(如离线处理MapReduce、在线处理的Storm、迭代式计算框架Spark、流式处理框架S4等) 部署到一个公共集群中,共享集群的资源。并提供如下功能:

资源的统一管理和调度:

       集群中所有节点的资源(内存、CPU、磁盘、网络等)抽象为Container,根据每个节点的配置不同,所能抽象出来的Container的数量也是不一样的(Container配置参考:YARN的Memory和CPU调优配置详解-hackeruncle-ITPUB博客)。计算框架需要资源进行运算任务时需要向YARN申请Container, YARN按照特定的策略对资源进行调度进行Container的分配。

资源隔离:

       YARN使用了轻量级资源隔离机制Cgroups进行资源隔离以避免相互干扰,一旦Container使用的资源量超过事先定义的上限值,就将其杀死。YARN是对Mapreduce V1重构得到的,有时候也成为MapReduce V2。

       YARN可以看成一个云操作系统,由一个ResourceManager和多个NodeManager组成, 它负责管理所有NodeManger上多维度资源, 并以Container(启动一个Container相当于启动一个进程)方式分配给应用程序启动ApplicationMaster(相当于主进程中运行逻辑) 或运行ApplicationMaster切分的各Task(相当于子进程中运行逻辑)。

2、YARN框架

YARN总体上是Master/Slave结构,主要由ResourceManager、NodeManager、 ApplicationMaster和Container等几个组件构成。

ResourceManager(RM)

负责对各NM上的资源进行统一管理和调度。将AM分配空闲的Container运行并监控其运行状态。对AM申请的资源请求分配相应的空闲Container。主要由两个组件构成:调度器和应用程序管理器:

调度器(Scheduler)

调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。调度器仅根据各个应用程序的资源需求进行资源分配,而资源分配单位是Container,从而限定每个任务使用的资源量。Shceduler不负责监控或者跟踪应用程序的状态,也不负责任务因为各种原因而需要的重启(由ApplicationMaster负责)。总之,调度器根据应用程序的资源要求,以及集群机器的资源情况,为应用程序分配封装在Container中的资源。

应用程序管理器(Applications Manager)

应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动AM、监控AM运行状态并在失败时重新启动等,跟踪分给的Container的进度、状态也是其职责。

NodeManager (NM)

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

ApplicationMaster (AM)

用户提交的应用程序均包含一个AM,负责应用的监控,跟踪应用执行状态,重启失败任务等。ApplicationMaster是应用框架,它负责向ResourceManager协调资源,并且与NodeManager协同工作完成Task的执行和监控。MapReduce就是原生支持的一种框架,可以在YARN上运行Mapreduce作业。有很多分布式应用都开发了对应的应用程序框架,用于在YARN上运行任务,例如Spark,Storm等。如果需要,我们也可以自己写一个符合规范的YARN application。

注意:每个应用程序只有一个AM,而且是独立的,随着该程序申请而开启,随着该程序的完成而结束。

Container

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

3、YARN工作流程

1、client向YARN中提交应用程序,其中包括AM程序、启动AM的命令、命令参数、用户程序等;事实上,需要准确描述运行ApplicationMaster的unix进程的所有信息。提交工作通常由YarnClient来完成。

2、RM为该应用程序寻找NM并分配第一个Container,并与对应的NM通信,要求它在这个Container中启动AM(注意:AM对)。

3、AM首先向RM注册,这样用户可以直接通过RM査看应用程序的运行状态,运行状态通过

AMRMClientAsync.CallbackHandler的getProgress() 方法来传递给RM。

然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4〜7;

4、AM采用轮询的方式通过RPC协议向RM申请和领取资源;资源的协调通过 AMRMClientAsync异步完成,相应的处理方法封装在AMRMClientAsync.CallbackHandler中。

5、—旦AM申请到资源后,便与对应的NM通信,要求它启动任务;通常需要指定一个ContainerLaunchContext,提供Container启动时需要的信息。

6、NM为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务;

7、各个任务通过某个RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务;ApplicationMaster与NM的通信通过NMClientAsync

object来完成,容器的所有事件通过NMClientAsync.CallbackHandler来处理。例如启动、状态更新、停止等。

8、应用程序运行完成后,AM向RM注销并关闭自己。

相关文章

  • hadoop-初识六(YARN)

    参考博客(理解Hadoop YARN架构 - CSDN博客) 1、YARN介绍 YARN(Yet Another...

  • Hadoop- yarn notes

    Yarn基础架构 1 YARN产生背景 最早的hadoop是由hdfs和mr组成的,hdfs负责存储,mr负责计算...

  • Hadoop-理解yarn

    微信公众号:北风中独行的蜗牛 YARN 集群也分为Master/Slave架构,主要由ResourceManage...

  • hadoop-初识四(删除备份)

    1、说明 Linux系统不像Windows系统有垃圾回收的功能,文件删除后(如果丢到垃圾箱)还能还原,算是比较不太...

  • hadoop-初识三(pid浅析)

    1、pid说明 pid就是进程号,hadoop组件启动之后会把各自进程的进程号信息写到文件中存储,hadoop执行...

  • Hadoop-入门篇环境搭建(一)

    转载请注明原文出处 linux安装+网络配置 阿牛的资料下载Hadoop-入门篇环境搭建(一)Hadoop-入门篇...

  • Hadoop-入门篇环境搭建(四)

    转载请注明原文出处 hadoop搭建 阿牛的资料下载Hadoop-入门篇环境搭建(一)Hadoop-入门篇环境搭建...

  • hadoop入门(初识yarn)

    分布式计算设计原则:移动计算,而不是移动数据。配置计算机调度系统yarn和计算引擎Map/Reduce。 插入配置...

  • hadoop-初识二(HDFS读写理解)

    hadoop最基本的功能设计就是对外提供数据的读写。框架如下(client就是读写操作的代表,一般指的是API方式...

  • hadoop-初识五(常用命令)

    hdfs dfs等价于hadoop fs 1、查询命令 查看根目录下所有文件和目录 $hdfs dfs -ls /...

网友评论

    本文标题:hadoop-初识六(YARN)

    本文链接:https://www.haomeiwen.com/subject/stlmjftx.html