hadoop支持多用户环境,在生产环境中,往往一个大的hadoop集群,供多个应用如Hive,Mahout等之类的使用。在多用户环境下,有的用户提交的工作量很大、很频繁,而有的很少,还有的优先级很高,那么如何保证“按需”来为各个用户分配资源(内存、CPU、带宽、IO、磁盘)呢?这就需要用到资源调度器。
这里,我对hadoop的资源调度做个简单的归纳总结:
一、基本术语
用户分组管理
用于按组为单位组织管理,某个用户只能向固定分组中提交作业,只能使用固定分组中配置的资源;同时可以限制每个用户提交的作业数,使用的资源量等
作业管理
包括作业提交权限控制,作业运行状态查看权限控制等。如:可限定可提交作业的用户;可限定可查看作业运行状态的用户;可限定普通用户只能修改自己作业的优先级,kill自己的作业;高级用户可以控制所有作业等。
用户(User)
Hadoop使用Linux用户管理,Hadoop中的用户就是Linux中的用户
分组(group)
Hadoop使用Linux分组管理,Hadoop中的分组就是Linux中的分组
池(pool)
Hadoop Fair Scheduler中的概念,一个pool可以是一个user,一个group,或者一个queue。
队列(Queue)
队列是Hadoop提出的概念,一个Queue可以由任意几个Group和任意几个User组成。
二、资源调度管理简介
Hadoop的资源管理核心:
存储容量管理
HDFS存储管理
计算容量管理
MR任务槽管理
任务调度器
三、存储容量管理
主要是对HDFS的管理:
HDFS本身也是一种文件系统,与Linux文件系统有类似之处
对用户组、用户、路径设置Quotas(包括空间大小和文件数量)
Hadoop dfsadmin -setSpaceQuota size path
hadoop dfsadmin -setQuota number path
Hadoop共享Linux的用户组和用户
HDFS的权限控制:用户和用户组
四、计算容量管理
主要是对MapReduce任务槽的管理,任务槽也可以理解为服务器的资源综合统称:
CPU(如何设置MR,见下面备注)
内存(设置子任务的jvm参数和GC参数。在1 . 0以后的版本中,可以全局M/R内存和Job M/R内存)
网络带宽
磁盘IO
单台主机或整个集群资源是有限的。在多任务、多用户环境下,大量并发提交和执行任务是非常常见的,这就导致资源不足而竞争,如何保证在有限资源或业务约束下有序调度和执行任务,需要有一个协调者,这就是Hadoop的资源调度器。
Hadoop的调度器
FIFO(default)。先进先出调度器
Hadoop默认提供。
Fair Scheduler(plugin)。公平调度器
Facebook提供。
Capacity Scheduler (plugin)。容量调度器
Yahoo提供。
1、FIFO Scheduler
先进先出调度器
优点:
Hadoop默认提供。非常简单、JobTracker无负担
支持五级优先级,每级一个队列,从队列优先级高低提取任务执行。五级分别是:Very Low 、Low 、Normal 、High 、Very Hign;
在同级队列中,按提交Job的时间先后顺序执行
无需额外配置
缺点:
完全忽略不同作业的需求差异
2、Fair Scheduler
公平分享调度器:在多个用户之间共享集群资源。它按资源池来组织作业,并把资源按时间公平地分到这些资源池里。在每一个资源池内,会使用公平共享地方法在运行作业之间共享容量。
特征:
支持多用户(默认一个用户对一个池,依赖于Linux多用户环境)
资源公平共享(公平共享量由优先级决定,同优先级按FIFO调度)
保证最小共享量
支持时间片抢占
限制作业并发量,以防止中间数据塞满磁盘
3、Capacity Scheduler
容量调度器:使多个用户可以安全地共享一个大的集群,应用程序可以在容量限度下获取到需要的资源,最大化集群的吞吐率和利用率。它按队列来组织作业,每个队列会配置一定比例的计算资源,且所有提交到队列中的作业共享该队列中的资源。
特征:
层次化的队列
层次化的队列支持在一个组织内子队列的优先共享资源,从而提供了更多的控制和预
测的能力,不支持抢占
资源容量保证
队列实现了一种资源的划分,所有的应用都会被指定到特定的队列,这些应用所能使用到的资源受到队列所拥有资源的限制
安全性
每一个队列都有一个严格的ACL来控制那些用户可以访问队列,并且有一个safe-guard来保证用户不能够看或者修改其他用户的应用,而且每个队列或系统都可以设置管理员角色。
弹性
空闲的资源可以分配给任何队列,这样可能超出队列的资源限制。也就是说,如果集群有空闲的资源,而有些队列需要的资源超出了分给他的限制,这些空闲的资源将被分配给这些队列,这样就保证了资源的可预测性和弹性,从而防止了人工孤岛,帮助实现资源的优化利用。
多用户
系列的综合设置可以防止单一的应用或用户占用队列或集群的全部资源,防止集群被单用户过度使用,从而保证了多用户可以共同使用集群
可操作性
RuntimeConfiguration:一些设置可以在运行时进行配置,例如资源分配的容量, ACL
基于资源的调度
支持资源密集型的应用,应用可以被指定分配超出缺省设置的更多的资源
Fair VS Capacity
相同点
均支持多用户多队列,即:适用于多用户共享集群的应用环境
单个队列均支持优先级和FIFO调度方式
均支持资源共享,即某个queue中的资源有剩余时,可共享给其他缺资源的queue
异同点
核心调度策略不同。 计算能力调度器的调度策略是,先选择资源利用率低的queue,然后在queue中同时考虑FIFO和memory constraint因素;而公平调度器仅考虑公平,而公平是通过作业缺额体现的,调度器每次选择缺额最大的job(queue的资源量,job优先级等仅用于计算作业缺额)。
内存约束。计算能力调度器调度job时会考虑作业的内存限制,为了满足某些特殊job的特殊内存需求,可能会为该job分配多个slot;而公平调度器对这种特殊的job无能为力,只能杀掉这种task。
单一用户环境下,Fair只能共享一个池,Capacity可以多队列
相关推荐
mapred.capacity-scheduler....mapred.capacity-scheduler.queue.<queue-name>.maximum-capacity:设置调度器中各个queue最大可以占有的容量,默认为-1表示最大可以占有集群100%的资源,和设置为100的效果是一样的。
通过研究蚁群算法,针对现有Hadoop调度器的不足,提出一个基于蚁群算法的Hadoop资源感知调度器及其具体实现方案。从而使Hadoop作业调度器可以更有效地对任务进行分配,提高整体架构的作业性能。通过实验证明,利用蚁...
公平调度器按资源池(pool)来组织作业,并把资源公平的分到这些资源池里。默认情况 下,每一个用户拥有一个独立的资源池,以使每个用户都能获得一份等同的集群资源而不管 他们提交了多少作业。按用户的 Unix 群组或...
Hadoop技术-YARN资源调度器.pptx
针对如上问题,深入分析了Hadoop源代码,理清了Hadoop的运行原理,在Hadoop资源管理机制Yarn中改进了Hadoop任务的排序,建立了新的任务排序规则,提出了对各节点性能评价的指标,分为动态性能指标和静态性能指标。...
通过研究蚁群算法,针对现有Hadoop调度器的不足,提出一个基于蚁群算法的Hadoop资源感知调度器及其具体实现方案。从而使Hadoop作业调度器可以更有效地对任务进行分配,提高整体架构的作业性能。通过实验证明,利用蚁...
HadoopYARN大数据计算框架及其资源调度机制研究,对Yarn的工作机制做一个全面的概述,揭示原理
3.Yarn Hadoop资源调度器 1.HDFS HDFS的设计特点是: 1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了 2、文件分块存储,HDFS会将一个完整的大文件平均...
以粒子位置代表可行的资源调度方案,以任务完成时间及资源负载均衡度作为目标函数,通过粒子群优化算法,找到最优的资源调度方案。实验结果表明,该算法能够很好的平衡资源负载,减少任务完成时间,有效的提高了Hadoop平台...
本书围绕Hadoop和Spark两个主流大数据技术进行讲解,主要内容包括Hadoop环境配置、Hadoop分布式文件系统(HDFS)、Hadoop分布式计算框架MapReduce、Hadoop资源调度框架YARN与Hadoop新特性、Hadoop分布式数据库HBase...
大数据课程——Hadoop集群程序设计与开发,教师版,提供教学大纲、教案、教学设计、实训文档等,课程内容包含教学准备环境、软件安装、作业、教学文档、演示视频,花费巨额时间亲自制作,下载后可私信提供上述所有...
Hadoop原有的作业调度算法在任务级调度阶段均采用简单考虑数据本地性的任务分配策略,并不能保证良好的数据本地性,而相应的改进算法改进目标不一,也不完全适用于所有作业调度场合。针对以上问题,结合数据预取理念...
针对上述两问题将严重影响集群作业的执行进度, 在Hadoop平台下利用统计方法, 提出一种资源调度算法, 对计算资源较少的节点和不稳定状态的节点进行标志并降权, 让集群尽可能调度资源较好的稳定节点。实验结果表明, 该...
在Hadoop1.x 时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。 在Hadoop2.x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce 只负责运算。 Hadoop3.x在组成上没有变化Hadoop ...
在计算能力调度算法中没有全面考虑各资源特征的分配是否满足作业多样的服务要求,...在搭建的Hadoop平台上进行实验表明,改进后的算法能较均衡地分配系统资源减少一些作业的等待时间,并且运行全部作业的用时有所减少。
针对在非抢占式的DeadLine算法中,作业完成时间过长和资源利用率不高的问题,提出了一种基于DeadLine抢占式调度算法
针对目前Hadoop作业调度方法服务水平不高、资源利用率低的问题,提出了一种改进的Hadoop多用户作业调度算法。分析了Hadoop现行调度算法...仿真结果表明,该资源调度方法提高了作业的服务质量,实现了资源的合理调度。
Hadoop——资源调度器YARN 7. Hadoop——Hadoop数据压缩 二、Zookeeper 1.Zookeeper——Zookeeper概述 2.Zookeeper——Zookeeper单机和分布式安装 3.Zookeeper——Zookeeper客户端命令 4.Zookeeper...
资源内容:Hadoop+0.20.1+API.chm;Hadoop公平调度器指南.pdf;Hadoop入门手册.chm;hadoop入门学习资料大全.pdf
Hadoop,YARN,资源分配,调度