标签:
先进先出调度器是Hadoop的默认调度器。就像这个名字所隐含的那样,这种调度器就是用简单按照“先到先得”的算法来调度任务的。例如,作业A和作业B被先后提交。那么在执行作业B的任务前,作业A中的所有map任务都应该已经执行完成。
配置:调度器类型的配置是在mapred-site.xml文件中,将mapred.jobtracker.taskscheduler参数设置为我们想要使用的调度器的类名,FIFO调度器的类名是org.apache.hadoop.mapred.jobQueueTaskScheduler。当然,如果想用FIFO调度器,并不需要在配置文件中明确指定,因为默认的就是FIFO调度器。
公平调度器,有时也叫公平共享调度器或FS调度器,是默认FIFO调度器的一种替代调度器。开发公平调度器的目的是解决FIFO调取器在大流量多用户环境中所滋生的一些问题。
某些加载项尚不支持其存在,在原来(MR1)公平调度。其中,是使用自定义的政策管辖优先权“提升”过某些应用程序。
将应用程序自动加载到队列
公平调度器允许管理员配置策略,自动将应用程序提交到合适的队列中。放置可以依赖于提交者和应用程序通过请求队列中的用户和组。策略由一组规则按顺序应用到传入的应用程序进行分类的。每项规则会将应用程序放入一个队列,拒绝它,或者继续到下一个规则。请参考下面的配置文件格式如何配置这些策略。
安装
要使用公平调度器首先在yarn-site.xml配置相应的调度类:
<property>
<name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> </property>
配置
自定义公平调度器通常需要修改两个文件。首先,调度范围的选项可以通过添加在您现有的配置目录在yarn-site.xml文件配置属性进行设置。第二,在大多数情况下,用户希望创建一个配置文件列表的队列存在,它们各自的权重和容量。配置文件被装入每10秒,允许改变要在程序进行调度方式。
配置文件必须是XML格式。该格式包含了五种类型的元素:
这里有一个例子配置文件中给出:
<?xml version="1.0"?> <allocations> <queue name="sample_queue"> <minResources>10000 mb,0vcores</minResources> <maxResources>90000 mb,0vcores</maxResources> <maxRunningApps>50</maxRunningApps> <weight>2.0</weight> <schedulingPolicy>fair</schedulingPolicy> <queue name="sample_sub_queue"> <aclSubmitApps>charlie</aclSubmitApps> <minResources>5000 mb,0vcores</minResources> </queue> </queue> <user name="sample_user"> <maxRunningApps>30</maxRunningApps> </user> <userMaxAppsDefault>5</userMaxAppsDefault> <queuePlacementPolicy> <rule name="specified" /> <rule name="primaryGroup" create="false" /> <rule name="default" /> </queuePlacementPolicy> </allocations>
根队列的ACL是“*”,其中,因为ACL是传下来的默认值,也就是说,每个人都可以提出来,并从每个队列杀应用程序。要开始限制访问,修改root队列的ACL来的东西比“*”等。
管理
公平调度器提供了通过两个机制来管理支持在运行时:
以下字段可以看出,Web界面上显示每个队列信息:
除此之外ResourceManager中通常会显示每个应用程序的信息,Web界面,包括应用程序的公平份额。
参考链接:
计算能力调度器是由Yahoo贡献的,主要是解决HADOOP-3421中提出的,在调度器上完成HOD(Hadoop On Demand)功能,克服已有HOD的性能低效的缺点。它适合于多用户共享集群的环境的调度器。本文解析的计算能力调度器属于Hadoop 0.20.2。
Capacity Scheduler支持以下特性:
(1) 计算能力保证。支持多个队列,某个作业可被提交到某一个队列中。每个队列会配置一定比例的计算资源,且所有提交到队列中的作业共享该队列中的资源。
(2) 灵活性。空闲资源会被分配给那些未达到资源使用上限的队列,当某个未达到资源的队列需要资源时,一旦出现空闲资源资源,便会分配给他们。
(3) 支持优先级。队列支持作业优先级调度(默认是FIFO)
(4) 多重租赁。综合考虑多种约束防止单个作业、用户或者队列独占队列或者集群中的资源。
(5) 基于资源的调度。 支持资源密集型作业,允许作业使用的资源量高于默认值,进而可容纳不同资源需求的作业。不过,当前仅支持内存资源的调度。
参考链接:
标签:
原文地址:http://www.cnblogs.com/gaopeng527/p/4930616.html