概述
一、特点
1) 可配置的层级队列:所有队列都来自于root队列。可用的资源被分配给root队列的孩子队列,孩子队列分得的资源可统一分配给孩子队列的孩子队列。公平调度支持为每个队列设置不同的策略,让队列通过用户想要的方式来分享资源。
2) 自动把应用程序放置到队列中:允许管理员配置策略,把提交的应用程序自动的放置到合适的队列中。
3)支持抢占机制,如果一个池在特定的一段时间内未能公平共享资源,就会中止运行池中得到过多资源的任务,把空出来的任务槽让给运行资源不足的作业池
二、 配置
1) 配置ResourceManager:
在conf/yarn-site.xml中配置yarn.resourcemanager.scheduler.class,值为org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler。
2) yarn-site.xml
yarn.scheduler.fair.allocation.file 用户自定义的xml配置文件路径,主要配置整个队列的属性,默认为fair-scheduler.xml
yarn.scheduler.fair.user-as-default-queue 在用户没有为应用指导队列名时,是否使用用户名作为队列名,若为false,则提交到default队列中,默认为true。
Yarn.scheduler.fair.preemption 是否支持资源抢占,默认false
Yarn.scheduler.fair.sizebasedweight 队列默认采用轮询方式公平的为每个应用分配资源,若该值为true,则可以设置权重来要求分配资源,权重越大,分配的资源越多,默认值为false。
Yarn.scheduler.fair.assignmultiple 在一次心跳通信中,是否允许多container分配,默认false。
Yarn.scheduler.fair.max.assign 在assingmultiple为true的情况下,在一次心跳通信中,所允许的最大数量的containers被分配,默认为-1,表示无限制。
Yarn.scheduler.fair.locality.threshold.node 当应用程序在指定的节点上请求containers时,在没有满足需求的情况下,最多能跳过的调度机会的次数,一次心跳通信为一次调度机会,默认为-1.0,表示不跳过任何一次的调度机会。
Yarn.scheduler.fair.locality.threshold.rack 当应用程序在指定的机器上请求containers时,在没有满足需求的情况下,最多能跳过的调度机会的次数,一次心跳通信为一次调度机会,默认为-1.0,表示不跳过任何一次的调度机会。
Yarn.scheduler.fair.allow-undeclared-pools 该值为true,在应用提交时,新的队列能被创建。若为false,任何时候,应用将要被放在在一个用户配置文件没有指定的队列,即default队列。默认值为true,若在配置文件中,一个队列的配置策略被指定,则改属性被忽略。
3) 用户配置文件
用户自定义配置文件为fair-scheduler.xml,属性为:
minResources 最少资源保证,x mb,y vcores
maxResources 最多资源保证,格式同上
maxRunningApps 最大运行中应用的数目
weight 可提供按需获取资源,数值越大,可获取的资源越多
schedulingPolicy 可为每个队列设置调度策略,如FIFO,Fair,DRF
aclSubmitApps 可以指定向该队列中提交应用程序的用户列表,默认是“*”,表示任何用户都可以提交
aclAdministerApps 队列的管理员列表
minSharePreemptionTimeout 最小共享量抢占时间
4) 队列访问控制列表(ACLs)
ACLs允许管理员控制谁可以在特定的队列上执行操作,是通过配置aclSubmiApps和aclAdministerApps属性实现的,每个队列都可以设置这两个属性。当前只支持的管理操作是杀死应用程序。队列管理员可以向队列提交应用程序。
三、 管理:
1) 运行时更改配置,支持更改最小共享、限制、权重、抢占超时和队列调度策略
2) 通过web界面监控
最后
以上就是威武抽屉为你收集整理的YARN的调度器--------公平调度器(Fair Schedule)的全部内容,希望文章能够帮你解决YARN的调度器--------公平调度器(Fair Schedule)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复