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可以多队列
相关推荐
Hadoop任务调度器是Hadoop分布式计算框架中的核心组件之一,负责管理和分配集群资源,以实现任务的高效执行。Hadoop的作业调度过程可以划分为几个主要阶段,这些阶段涉及到从作业提交到任务分配的各个环节。下面详细...
《深入理解Hadoop容量调度器》 在Hadoop生态系统中,资源调度是集群高效运行的关键。容量调度器(Capacity Scheduler)作为Hadoop MapReduce的重要组件,旨在确保多用户、多任务公平共享集群资源。它通过设定不同的...
HADOOP 工作调度器介绍 HADOOP 作为大数据时代的重要技术之一,已经被广泛应用于各个行业中,其中任务调度器是 HADOOP 的一个重要组件。本文将介绍 HADOOP 工作调度器的相关知识点,主要基于 FACEBOOK 的使用经验。...
调度器在Hadoop中扮演着分配计算资源的角色,确保多任务并行执行时的公平性和效率。传统的Hadoop调度器采用的是First In First Out(FIFO)策略,即按作业提交的顺序分配资源,但这种方法并不适用于复杂的工作负载和...
"Hadoop技术-YARN资源调度器" Hadoop技术作为大数据处理的重要技术之一,YARN(Yet Another Resource Negotiator)作为Hadoop的资源管理层,负责管理和分配集群资源。YARN资源调度器是Hadoop YARN中最核心的组件之...
2. **作业队列管理**:不同于Hadoop默认调度器仅维护一个作业队列,公平调度器通过资源池(Pool)来组织作业,使得小作业可以在合理时间内完成,同时避免大作业因资源不足而被“饿死”。 3. **优先级与权重**:公平...
Hadoop公平调度器是一种全新的作业调度方式,它与传统的Hadoop默认调度器不同,后者通常采用先进先出(FIFO)策略处理作业请求,可能导致小型作业等待较长的时间才能获得资源,而大型作业则可能长期占用大部分集群...
- **Capacity Scheduler(容量调度器)**:旨在解决多租户环境下的资源分配问题,通过定义队列来分配资源,每个队列都有固定的资源容量限制。 - **Fair Scheduler(公平调度器)**:确保所有作业都能获得一定的资源...
### hadoop公平调度算法解析 #### 一、公平调度的核心理念与应用场景 公平调度器,作为Hadoop生态...随着技术的不断发展,公平调度器将继续进化,为大数据处理和云计算领域提供更加强大和灵活的资源调度解决方案。
综上所述,Hadoop的公平调度器通过引入资源池、最小保障资源、优先级处理和资源抢占等机制,为Hadoop集群提供了更为灵活和高效的资源管理能力,尤其是在多用户、多任务的复杂场景下,能够显著提升资源利用率和作业...
总结来说,yarm作为一个新的Hadoop资源管理器,它在传统YARN的基础上进行了优化,可能包括更高效的资源调度策略、更友好的用户界面以及更好的可扩展性。通过阅读其源代码、理解其设计原理,开发者可以为Hadoop集群...
然而,在实际的应用过程中,如何有效地调度Hadoop集群中的资源,以提高任务执行效率和资源利用率,仍然是一个亟待解决的问题。因此,深入研究和优化Hadoop调度算法对于提高Hadoop集群的整体性能具有重要意义。 ####...
### Hadoop资源管理器YARN详解 #### 一、引言 随着大数据处理需求的日益增长,Hadoop作为主流的大数据处理平台之一,其资源管理能力对于提高整体系统的性能至关重要。YARN(Yet Another Resource Negotiator)是...
YARN自带了两种资源调度器:容量调度器(CapacityScheduler)和公平调度器(FairScheduler)。容量调度器允许管理员在资源分配中设定容量保证和资源共享,它支持多租户环境,使得多个组织或用户可以共享同一个YARN...
3. **Fair Scheduler**:公平调度器,旨在使所有队列公平地共享集群资源。 这些调度算法在任务选择策略上都倾向于优先选择具有数据本地性的任务,即尽可能将任务调度到包含其输入数据的节点上,以减少网络传输开销...
【Yarn资源调度器】是Hadoop大数据处理框架的核心组件之一,主要负责集群资源的管理和分配,确保高效、公平地运行各种计算任务。本课程详细介绍了Yarn的基本架构、工作机制、调度器及调度算法,以及如何进行实际操作...