配额文件为每一个资源池配置最小共享资源、运行作业限制、权重和抢占超时时间。HADOOP_HOME/conf/fair-scheduler.xml.template提供了一个示例例子。配额文件可以包含下列类型的元素:
- pool元素,配置各个资源池。它们可能包含下列子元素:
。minMaps和minReduces,设置资源池最小共享的任务时间片。
。maxRunningJobs,限制从资源池同时运行的作业数量(默认是无限)。
。weight,以非比例的方式与其它资源池共享集群(默认是1.0)。
。minSharePreemptionTimeout,如果资源池的资源低于它的最小共享资源,在结束其它资源池的任务之前等待的秒数(默认是无限)。
- user元素,可能会包含一个的maxRunningJobs属性来限制作业。在默认情况下要注意,每一个用户有一个资源池,所以每用户限制不是必须的。
- poolMaxJobsDefault,为那些没有指定运行作业限制的资源池设定默认值。
- userMaxJobsDefault,为那些没有指定运行作业限制的用户设定默认值。
- defaultMinSharePreemptionTimeout,为那些没有指定最小共享资源抢占超时时间的资源池设定默认值。
- fairSharePreemptionTimeout,设置作业拥有低于其公平共享资源的一半的抢占超时时间。
Pool和user元素仅在你对资源池/用户设定了非默认值时才是必须的。也就是说,在运行公平调度器前,你不必在配置文件中声明所有的用户及资源池。如果一个用户或资源池没有列在配置文件中,将会使用运行作业限制、抢占超时时间等的默认值。
下面给出一个配额文件示例:
< allocations >
< poolname ="sample_pool" >
< minMaps > 5 </ minMaps >
< minReduces > 5 </ minReduces >
< weight > 2.0 </ weight >
</ pool >
< username ="sample_user" >
< maxRunningJobs > 6 </ maxRunningJobs >
</ user >
< userMaxJobsDefault > 3 </ userMaxJobsDefault >
</ allocations >
这个例子创建了一个资源池sample_pool,保证最小有5个map时间片和5个reduce时间片。资源池还有着2.0的权重,意味着它与其它资源池相比,拥有相对2倍的集群共享资源(默认是权重是1)。最后,除了sample_user可并行运行6个作业外,示例限制了其它每用户的运行作业数为3。任何未在配额文件中定义的资源池将获得无保证的容量及1.0的权重。与此同时,任何没有在配额文件中设置最大运行作业数的资源池或用户将被允许运行无限个作业。
HADOOP_HOME/conf/fair-scheduler.xml.template是一个更详细的例子文件,还设定了抢占超时时间。