本文源码:GitHub·点这里 || GitEE·点这里java
Hadoop三大核心组件:分布式文件系统HDFS、分布式计算框架MapReduce,分布式集群资源调度框架Yarn。Yarn并非在Hadoop初期就有的,是在Hadoop升级发展才诞生的,典型的Master-Slave架构。git
Yarn包括两个主要进程:资源管理器Resource-Manager,节点管理器Node-Manager。github
资源管理器算法
节点管理器spring
ApplicationMaster编程
Container设计模式
MapReduce应用开发遵循Yarn规范的MapReduceApplicationMaster,因此能够在Yarn上运行,其它计算框架若是也遵照该规范,这样就实现资源的统一调度管理。服务器
调度器的基本做用就是根据节点资源的使用状况和做业需求,将任务调度到各个节点上执行。单理解任务队列的话关键的因素有以下几个:进出方式,优先级,容量等。数据结构
Hadoop做业调度器主要有三种:FIFO、CapacityScheduler和FairScheduler,默认的资源调度器是CapacityScheduler。架构
先进先出调度器
FIFO一种批处理调度器,调度策略先按照做业的优先级高低,再按照到达时间的前后选择被执行的做业。
容量调度器
CapacityScheduler支持多个队列,每一个队列可配置必定的资源量,每一个队列采用FIFO调度策略,计算队列中正在运行的任务书和计算资源的比值,选中比值小相对空闲的队列,而后安装做业优先级和提交时间的排序。为了防止同一个用户的做业独占队列中的资源,该调度器会对同一用户提交的做业所占资源量进行限定。
例如上面图例,假设100个slot分为三个队列(ABC),按照以下分配规则:队列A给20%的资源,队列B给50%的资源,队列C给30%的资源;三个队列都按照任务的前后顺序依次执行,上面的job十一、job2一、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·点这里 | ☆☆☆☆☆ |