关于hadoop:Hadoop框架Yarn基本结构和运行原理

42次阅读

共计 1960 个字符,预计需要花费 5 分钟才能阅读完成。

本文源码:GitHub·点这里 || GitEE·点这里

一、Yarn 根本构造

Hadoop 三大外围组件:分布式文件系统 HDFS、分布式计算框架 MapReduce,分布式集群资源调度框架 Yarn。Yarn 并不是在 Hadoop 初期就有的,是在 Hadoop 降级倒退才诞生的,典型的 Master-Slave 架构。

Yarn 包含两个次要过程:资源管理器 Resource-Manager,节点管理器 Node-Manager。

资源管理器

  • 通常部署在独立的服务器,解决客户端申请;
  • 解决集群中的资源分配和调度治理;

节点管理器

  • 治理以后节点上的资源;
  • 执行解决各种具体的命令;
  • 监督节点资源状况,并上报资源管理器;

ApplicationMaster

  • 提供容错能力,切割数据;
  • 给应用程序申请资源并分配任务;

Container

  • Yarn 中的一个动静资源分配的概念;
  • 容器蕴含了一定量的内存、CPU 等计算资源;
  • 由 NodeManager 过程启动和治理;

二、根本执行流程

  • 向 Yarn 提交 MapReduce 应用程序程序进行调度;
  • RM 组件返回资源提交门路和 ApplicationId;
  • RM 过程 NM 过程通信,依据集群资源分配容器;
  • 将 MRAppMaster 散发到下面调配的容器下面;
  • 运行所需资源提交到 HDFS 上申请运行 MRAppMaster;
  • RM 通过上述操作把客户端申请转换为 Task 工作;
  • 容器中运行的就是 Map 或者 Reduce 工作;
  • 工作在运行期间和 MRAppMaster 通信上报状态;
  • 工作执行完结后过程登记并且开释容器资源;

MapReduce 利用开发遵循 Yarn 标准的 MapReduceApplicationMaster,所以能够在 Yarn 上运行,其它计算框架如果也恪守该标准,这样就实现资源的对立调度治理。

三、资源调度器

调度器的根本作用就是依据节点资源的应用状况和作业需要,将任务调度到各个节点上执行。单了解工作队列的话要害的因素有如下几个:进出形式,优先级,容量等。

Hadoop 作业调度器次要有三种:FIFO、CapacityScheduler 和 FairScheduler,默认的资源调度器是 CapacityScheduler。

先进先出调度器

FIFO 一种批处理调度器,调度策略先依照作业的优先级高下,再依照达到工夫的先后抉择被执行的作业。

容量调度器

CapacityScheduler 反对多个队列,每个队列可配置肯定的资源量,每个队列采纳 FIFO 调度策略,计算队列中正在运行的任务书和计算资源的比值,选中比值小绝对闲暇的队列,而后装置作业优先级和提交工夫的排序。为了避免同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。

例如下面图例,假如 100 个 slot 分为三个队列 (ABC),依照如下调配规定:队列 A 给 20% 的资源,队列 B 给 50% 的资源,队列 C 给 30% 的资源;三个队列都依照工作的先后顺序顺次执行,下面的 job11、job21、job31 是最先运行,也是并行运行。

偏心调度器

和容量调度器原理相似,反对多队列多用户,每个队列中的资源量能够配置,同一队列中的作业偏心共享队列中所有资源。

比方有三个队列 (ABC),每个队列中的 job 依照优先级分配资源,优先级越高调配的资源越多,然而每个 job 都会调配到资源以确保偏心。在资源无限的状况下,每个 job 现实状况下取得的计算资源与理论取得的计算资源存在一种差距,,这个差距就叫做缺额。在同一个队列中,job 的资源缺额越大,越先取得资源优先执行,作业是依照缺额的高下来先后执行的。

四、源代码地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

举荐浏览:编程体系整顿

序号 项目名称 GitHub 地址 GitEE 地址 举荐指数
01 Java 形容设计模式, 算法, 数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
02 Java 根底、并发、面向对象、Web 开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
03 SpringCloud 微服务根底组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
04 SpringCloud 微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
05 SpringBoot 框架根底利用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
06 SpringBoot 框架整合开发罕用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
07 数据管理、分布式、架构设计根底案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆

正文完
 0