hadoop资源调度器

标签: hadoop 资源 调度 | 发表时间:2013-05-17 17:07 | 作者:
出处:http://www.iteye.com

         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可以多队列

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [hadoop 资源 调度] 推荐:

hadoop资源调度器

- - ITeye博客
         hadoop支持多用户环境,在生产环境中,往往一个大的hadoop集群,供多个应用如Hive,Mahout等之类的使用. 在多用户环境下,有的用户提交的工作量很大、很频繁,而有的很少,还有的优先级很高,那么如何保证“按需”来为各个用户分配资源(内存、CPU、带宽、IO、磁盘)呢.         这里,我对hadoop的资源调度做个简单的归纳总结:.

hadoop调度算法

- - 互联网 - ITeye博客
1 hadoop目前支持以下三种调度器:. FifoScheduler:最简单的调度器,按照先进先出的方式处理应用. 只有一个队列可提交应用,所有用户提交到这个队列. CapacityScheduler:可以看作是FifoScheduler的多队列版本. 但是,队列间的资源分配以使用量作排列依据,使得容量小的队列有竞争优势.

Hadoop 1.0与Hadoop 2.0资源管理方案对比

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/. 本博客的文章集合: http://dongxicheng.org/recommend/.

Hadoop书籍和网络资源介绍

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce/hadoop-books/. 本文介绍Hadoop Core(MapReduce和HDFS)相关的书籍和网络资源.

如何编写Hadoop调度器

- Guancheng(冠诚) - 董的博客
在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器,然后在配置文件中指定相应的调度器,这样,当Hadoop集群启动时,便会加载该调度器. 当前Hadoop自带了几种调度器,分别是FIFO(默认调度器),Capacity Scheduler和FairScheduler,通常境况下,这些调度器很难满足公司复杂的应用需求,因而往往需要开发自己的调度器.

Hadoop中Speculative Task调度策略

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce/hadoop-speculative-task/. Speculative Task思路是以空间换时间的,同时启动多个相同task,哪个完成的早,则采用哪个task的结果,这样明显可以提高任务计算速度,但是,这样却会占用更多的资源,在集群资源紧缺的情况下,合理的控制Speculative Task,可在多用少量资源情况下,减少大作业的计算时间.

Hadoop计算能力调度器算法解析

- Roger - 董的博客
本文描述了hadoop中的计算能力调度器(Capacity Scheduler)的实现算法,计算能力调度器是由Yahoo贡献的,主要是解决HADOOP-3421中提出的,在调度器上完成HOD(Hadoop On Demand)功能,克服已有HOD的性能低效的缺点. 它适合于多用户共享集群的环境的调度器.

利用yarn多队列实现hadoop资源隔离 - bbaiggey_bigdata的博客 - CSDN博客

- -
大数据处理离不开hadoop集群的部署和管理,对于本来硬件资源就不多的创业团队来说,做好资源的共享和隔离是很有必要的,毕竟不像BAT那么豪,那么怎么样能把有限的节点同时分享给多组用户使用而且互不影响呢,我们来研究一下yarn多队列做资源隔离. 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址.

分布式系统Hadoop源码阅读与分析(一):作业调度器实现机制

- otter - 博客园-首页原创精华区
上一篇博文对Hadoop的作业调度器进行了介绍,我们知道,JobTracker和TaskTracker是Hadoop作业调度过程中最核心的两个部分,前者负责map/reduce作业的调度与分派,后者负责map/reduce作业的实际执行,它们之间通过RPC机制进行通讯. 下面将对Hadoop 0.20.2版本中作业调度相关源码进行分析,至于JobTracker和TaskTracker中与作业调度无关的源码部分,并未进行详细介绍.

统一资源管理与调度平台(系统)介绍

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/. 随着互联网的高速发展,基于数据密集型应用的计算框架不断出现,从支持离线处理的MapReduce,到支持在线处理的Storm,从迭代式计算框架Spark到流式处理框架S4,…,各种框架诞生于不同的公司或者实验室,它们各有所长,各自解决了某一类应用问题.