大数据之Yarn框架

文章目录

  • 前言
  • 一、简介
  • 二、架构介绍
  • 三、任务执行流程介绍
  • 四、调度器
  • 总结


前言

#博学谷IT学习技术支持#

一、简介

Apache Hadoop Yarn 是一种新的Hadoop资源管理器,是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

二、架构介绍

Yarn是一个资源管理、任务调度的框架,主要包含三大模块:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。

  • ResourceManager:
    (1)负责整个集群的资源管理和分配,是一个全局的资源管理系统。
    (2)NodeManager以心跳的方式向ResourceManager汇报CPU和内存的情况,该模块只接受NodeManager的资源回报信息,对于具体的资源处理则交给NodeManager自己处理。
    (3)ResourceManager中的Yarn Scheduler组件根据application的请求为其分配资源,不负责具体job的监控、追踪、运行状态反馈、启动等工作。
  • NodeManager:
    (1)NodeManager是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控。
    (2)NodeManager会定时向ResourceManager模块汇报本节点资源的使用情况和Container的运行状态,当ResourceManager宕机时该模块会动连接ResourceManager备用节点。
    (3)NodeManager接收并处理来自ApplicationMaster的Container启动、停止等各种请求。
  • ApplicationMaster:
    (1)用户提交的每个应用程序均包含一个ApplicationMaster,它可以运行在ResourceManager以外的机器上
    (2)负责与ResourceManage调度器协商以获取资源
    (3)将得到的任务进一步分配给内部的任务
    (4)与NodeManager通信以启动/停止任务
    (5)监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

大数据之Yarn框架_第1张图片

三、任务执行流程介绍

大数据之Yarn框架_第2张图片
Yarn按照以下9个步骤完成每个任务的执行:
(1)Client客户端向MapReduce任务请求。
(2)ResourceManager会在某一台NodeManager上分配一个Container,然后启动一个AppMaster管理整个任务的执行。
(3)AppMaster向ResourceManager进行注册。
(4)AppMaster向ResoueceManager申请资源,ResourceManager以Container列表的形式返回资源列表,告诉AppMaster向谁请求资源。
(5)AppMaser根据资源列表分别向对应主机申请资源。
(6)各个NodeManager根据Container分别开辟对应资源,并且AppMaster会将MapReduce任务中各个MapTask和ReduceTask放在这些资源中运行。
(7)每个MapTask和ReduceTask在运行过程中都需要实时向AppMaster汇报。
(8)AppMaster会将任务执行的最终状态汇报给ResourceManager。
(Ⅰ)任务执行信息及时反馈给客户端。

四、调度器

当客户端向Yarn一次提交多个任务时,Yarn就需要使用调度器给多个任务分配资源,通俗的来讲,调度器就是来规定多个任务如何分配Yarn的资源。Yarn的调度器有以下三种:
1、 队列调度器
队列调度器,会将提交的Job放入一个队列中,先进入的Job会优先得到所有资源,可能会导致某个一个Job占用大部门资源,而且执行时间较长,会影响后期job的运行。
2、 容量调度器
(1) Apache的Hadoop默认使用的就是该调度器。
(2)容量调度器是将整个资源划分成多个队列,每一个队列占用一部分资源
(3)在提交任务时需要指定你要使用哪一个队列的资源,如果没有指定则使用默认队列
(4)容量调度器默认只有一个队列:default队列,如果想要建立其他队列则需要手动来设置
(5)执行任务的队列必须是叶子,也就是队列树中最末端队列
(6)给队列设置的资源占比都是资源的下限比例,默认最多可以使用%100的全部资源
3、公平调度器
(1)CDH(Cloudera Hadoop)默认就使用该调度器
(2)不管来多少job任务,都会对总资源进行平均分配


总结

可以将Yarn理解为一个分布式的操作系统平台,而Map Reduce等运算程序则相当于运行于操作系统之上的应用程序,Yarn为这些程序提供运算所需的CPU和内存资源。

你可能感兴趣的:(Hadoop,大数据,hadoop,mapreduce)