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注销自己。

欢迎关注我的微信公众号: 北风中独行的蜗牛
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章