Hadoop基础教程-第5章 YARN:资源调度平台(5.5 YARN的调度器)(草稿)
来源:互联网 发布:unity3d入门文章 编辑:程序博客网 时间:2024/06/05 15:48
第5章 YARN:资源调度平台
5.5 YARN的调度器
打个比方,Hadoop相当于一台虚拟计算机(由多台计算机构造的集群),那么HDFS就是这台虚拟计算机的文件系统,管理磁盘资源;而YARN负责管理虚拟计算机的CPU和内存资源。在YARN上跑的MapReduce程序(比如5.4节跑的PI和wordcount两个应用程序)就是在这台虚拟计算机跑的应用程序,需要磁盘、内存和CPU等资源。
所以,我们可以这样认为:HDFS+YARN=Cluster OS(集群操作系统)
Yarn的资源调度目前支持内存和CPU两种资源。Yarn支持三种调度方式:FIFO、FAIR和DRF分别是指先来先服务、公平调度和主资源公平调度。
5.5.1 FIFO调度器
FIFO(First in first out):先按照优先级高低调度,如果优先级相同,则按照提交时间先后顺序调度,如果提交时间相同,则按照(队列或者应用程序)名称大小(字符串比较)调度;不支持有子队列的情况。
在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。
FIFO Scheduler是最简单也是最容易理解的调度器,也不需要任何配置,但它并不适用于共享集群。
从图中可以看出,在FIFO 调度器中,小任务会被大任务阻塞。大的应用可能会占用所有集群资源,这就导致其它应用被阻塞。在共享集群中,更适合采用Capacity Scheduler或Fair Scheduler,这两个调度器都允许大任务和小任务在提交的同时获得一定的系统资源。
单队列组织方式:FIFO Scheduler
将所有的应用程序放到一个队列中。
局限性明显:资源利用率低,无法交叉运行作业。不够灵活,比如紧急的作业无法插队。
5.5.2 Fair调度器
FAIR:按照内存资源使用量比率调度,即按照used_memory/minShare大小调度(核心思想是按照该调度算法决定调度顺序,但还需考虑一些边界情况);
在Fair调度器中,我们不需要预先占用一定的系统资源,Fair调度器会为所有运行的job动态的调整系统资源。如下图所示,当第一个大job提交时,只有这一个job在运行,此时它获得了所有集群资源;当第二个小任务提交后,Fair调度器会分配一半资源给这个小任务,让这两个任务公平的共享集群资源。
需要注意的是,在下图Fair调度器中,从第二个任务提交到获得资源会有一定的延迟,因为它需要等待第一个任务释放占用的Container。小任务执行完成之后也会释放自己占用的资源,大任务又获得了全部的系统资源。最终的效果就是Fair调度器即得到了高的资源利用率又能保证小任务及时完成。
5.5.3 Capacity调度器
对于Capacity调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用FIFO调度器时的时间。
- Hadoop基础教程-第5章 YARN:资源调度平台(5.5 YARN的调度器)(草稿)
- Hadoop基础教程-第5章 YARN:资源调度平台(5.6 YARN的命令)(草稿)
- Hadoop基础教程-第5章 YARN:资源调度平台(5.1 YARN介绍)(草稿)
- Hadoop基础教程-第5章 YARN:资源调度平台(5.3 YARN集群配置)(草稿)
- Hadoop基础教程-第5章 YARN:资源调度平台(5.4 YARN集群运行)(草稿)
- Hadoop基础教程-第5章 YARN:资源调度平台(5.2 YARN参数解读与调优)
- Yarn 资源调度器
- Hadoop基础教程-第9章 HA高可用(9.4 YARN 高可用)(草稿)
- Hadoop YARN 内存和CPU两种资源的调度
- Yarn 资源调度策略
- YARN资源调度策略
- 资源调度框架YARN
- Yarn资源调度策略
- Yarn的原理与资源调度
- Yarn的原理与资源调度
- Yarn的原理与资源调度
- Hadoop Yarn调度器的选择和使用
- Hadoop Yarn调度器的选择和使用
- 多线程函数实例解析
- bzoj 1119置换群
- 选择排序
- 自己搭建5节点分布式集群
- php-人员权限管理(RBAC)
- Hadoop基础教程-第5章 YARN:资源调度平台(5.5 YARN的调度器)(草稿)
- 进程间通信-信号量
- 尤jx的科研经验
- 从源码看kubernetes与CNI Plugin的集成
- h5语义化标签
- jsp内置对象
- Android studio 常用的插件
- What is difference between HashMap and Hashtable in Java?
- Python正则表达式之\b