Hadoop-理解yarn

Posted 北风中独行的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop-理解yarn相关的知识,希望对你有一定的参考价值。

YARN 集群也分为Master/Slave架构,主要由ResourceManager,NodeManager, ApplicationMaster,Container等组成。

  1. ResourceManager 全局资源管理器,负责整个系统的资源管理分配和任务调度。ResourceManager包含Scheduler调度器和应用程序管理器Application mananger。调度器只是负责资源的分配,资源分配的单位是container,应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等。

  2. NodeManager是每个节点上的资源和任务管理器,它会向ResourceManager定时汇报本节点的资源使用情况和各个Container的运行状态,同时会接受处理来自ApplicationMaster的对Container的启动/停止请求。NodeManager不会监视具体的任务,他仅监视Container的使用情况。

  3. Task是应用程序的具体任务。例如map任务,reduce任务等

  4. Container是Yarn中的资源的具体分配单位,封装了CPU和内存资源的容器,相当于是一个Task的运行环境的具体抽象。从实现上看,Container是一个抽象类,里面定义资源信息。在NodeManager节点上拥有许多动态创建的Container。NodeManager会将计算机的CPU和内存的一定值抽离成虚拟值,然后这些虚拟值根据配置组成多个Container,当应用提出申请的时候,会分配相应的Container。
    应用程序运行的Container也分为两类,一类是运行的ApplicationMaster的Container,一类是运行Task的Container。前者是由ResourceManager向内部的调度器申请和启动,后者是由ApplicationMaster向ResourceManager申请,并由ApplicationMaster请求NodeManager启动

  5. ApplicationMaster应用内程序管理者。它向ResourceManager申请资源,CPU内存等,并将资源分配给task。一个应用程序对应一个applicationMaster。在用户提交一个应用程序的时候,会启动一个ApplicationMaster实例,ApplicationMaster会启动所需要的的Task,并监控task的运行状态,进度等。应用程序执行完之后,ApplicationMaster会关闭自己并释放Container。

MapReduce的处理过程:

在这里插入图片描述
  1. 提交MapReduce程序到ResourceManager

  2. ResourceManager分配container,并要求NodeManager启动APPMaster。AppMaster负责此应用程序的整个生命周期。

  3. AppMaster向ResourceManager注册(注册成功后,可以通过ResourceManager查看应用程序运行的状态)。AppMaster请求各个应用程序所需要的container

  4. AppMaster请求NodeManager使用这些Container运行task。

  5. 各个Task通过RPC协议向AppMaster汇报自己的运行状态和进度,如果task运行失败,AppMaster可以要求重新启动。当所有的task完成,AppMaster向ResourceManager注销自己。

在这里插入图片描述


以上是关于Hadoop-理解yarn的主要内容,如果未能解决你的问题,请参考以下文章

再次整理关于hadoop中yarn的原理及运行

Hadoop基础---shuffle机制(进一步理解Hadoop机制)

hadoop完全分布式的搭建的理解

一篇长文梳理Hadoop YARN和MapReduce优化

Spark on yarn 概念理解

hadoop yarn