功能介绍
公平调度器(Fair Scheduler)将资源公平的分配给 yarn 上的各个作业,通过权重来调整资源的分配。
名词解释
配置集:定义在给定时间内处于活动状态的队列之间的资源分配。资源池在不同配置集中的资源量限制相互独立,即可以按照业务分别进行配置,相互不影响。
计划模式:定义配置集何时处于活动状态。
放置规则:通过放置规则将不同的用户提交的作业自动分配到指定的队列中。
用户限制:定义用户可以同时提交的最多应用程序数量。
操作步骤
新建资源池
1. 登录 EMR 控制台,在集群列表中选择对应的 Hadoop 集群单击详情进入集群详情页。
2. 在集群详情页中选择集群服务 > Yarn 组件卡页右上角操作 > 资源调度进入资源调度页面。
3. 单击资源调度器开关,打开开关后即可进行相关调度器配置。
4. 在调度器编辑页面中,调度策略类型选择公平调度器(Fair Scheduler)并进行容量调度的全局配置。
5. 全局配置支持:程序上限设置。
6. 在选择调度器类型并保存后,即可对已有队列进行编辑、新建子队列、克隆等操作;也可点击新建队列即可新建对应的调度器类型的队列。
字段与配置项对照表:
字段名称 | 对应参数名称 | 参数含义 |
队列名称 | name | 队列的名称。队列名称只能由含数字、字母,-或_组成,不能以-或_开头。 |
父队列 | type 的值为 parent | 表示该队列虽然底下没有子队列,但它也不是叶子结点,在 hadoop 2.8x及以后父队列不能有子队列。 |
配置集 | 无 | yarn 没有此参数,表示定时任务的集合。 |
权重 | weight | 在父队列中的资源占比,权重越大分配的资源越多。 |
最小资源量 | minResources | 最少资源保证量,当一个队列的最少资源保证量未满足时,它将优先于其他同级队列获得资源。 |
最大资源量 | maxResources | 最多可以使用的资源量,每个队列可使用的资源量不会超过该值。 |
最高可同时处于运行的 App 数量 | maxRunningApps | 最多同时运行的应用程序数目,该限制可以防止超量 Map Task 同时运行时产生的中间输出结果撑爆磁盘。 |
App Master 最大份额 | maxAMShare | 限制队列用于运行 Application Master 的资源比例。这个属性只能用于叶子队列。 |
调度策略 | schedulingPolicy | 任一队列都可以设置调度策略,取值为 Fifo、Fair、Drf,其中 Fifo、Fair 在资源分配时只考虑内存,Drf 考虑内存和核数。 |
抢占模式 | allowPreemptionFrom | 在 hadoop 3.x 之后才生效,2.x 只能由全局配置 yarn.scheduler.fair.preemption 控制。 |
公平份额抢占阈值 | fairSharePreemptionThreshold | 队列的公平共享抢占阈值。如果队列等待 fairSharePreemptionTimeout 之后没有接收到 fairSharePreemptionThreshold*fairShare 的资源,它被允许从其他队列抢占资源。如果不设置,队列将会从其父队列继承这个值。 |
公平份额抢占超时时间 | fairSharePreemptionTimeout | 队列处在最小公平共享阈值之下,在尝试抢占其他队列的资源之前的秒数。如果不设置,队列将会从其父队列继承这个值。 |
最小共享优先权超时时间 | minSharePreemptionTimeout | 队列处在最小共享之下,在尝试抢占其他队列的资源之前的秒数。如果不设置,队列将会从其父队列继承这个值。 |
提交访问控制 | aclSubmitApps | 可以提交 apps 到队列的用户的列表。 |
管理访问控制 | aclAdministerApps | 可以管理队列的用户的列表。 |
配置计划模式
1. 单击策略设置中的计划模式即可进入计划模式页面,单击新建计划模式即可进行计划模式的新建。
配置集状态用于标记计划模式是否开启,默认为开启状态,若不需要使用自定义计划模式但仍想保留配置集,可将配置集状态设置为关闭。
2. 在新建计划模式中选择/填写配置集、名称和计划有效时间。
示例配置集
1. 登录 EMR 控制台,在集群列表中选择对应的 Hadoop 集群单击详情进入集群详情页。
2. 在集群详情页中选择集群服务 > Yarn 组件卡页右上角操作 > 资源调度进入资源调度页面。
3. 单击资源调度器开关,调度器类型选择 公平调度器(Fair Scheduler)。
4. 单击新建队列,根据实际需求进行配置。
5. 在资源调度页中选择计划模式>新建计划模式,根据业务需要调整计划有效时间。
说明
如果 EMR 集群配置了定时扩容,建议将计划模式的计划有效时间设置在定时扩容之后。
6. 在资源调度页中选择资源池,在配置集下拉选项中,选择一个配置集。
说明
资源池在不同配置集中的资源量限制相互独立,即可以按照业务分别进行配置,相互不影响。
7. 在配置集下选择之前创建的队列,按照业务进⾏资源量限制的调整。
8. 队列调整完后,单击部署生效,即可使设置生效。
配置放置规则
1. 单击策略设置中的放置规则即可进入放置规则页面,单击新建放置规则即可进行放置规则的新建。
2. 填写放置类型和池名称。
配置规则类型说明:
root.[pool name]:该规则始终满足,在其它规则不匹配的情况下使用,因此该规则默认要放置在所有匹配规则之后。
root.[pool name].[username]:该放置规则会判断资源池中是否存在相应的 pool name,存在则在该资源池下创建与用户名相同的资源池(勾选池不存在时创建池的情况下)。
root.[primary group]:该规则使用与该用户主要组匹配的资源池。Linux 中用户默认的主要组与用户名一致,匹配时会通过用户的主要组与资源池名称比对。
root.[primary group].[username]:该放置规则会优先使用用户的主要组匹配的资源池,然后使用与该用户名匹配的子池,如果勾选池不存在时创建池则会在该池下创建一个与用户名一致的子池。
root.[secondarygroup]:该放置规则用于匹配用户的次要组,使用与次要组之一匹配的资源池。
root.[secondarygroup].[username]:该放置规则首先匹配用户的次要组,然后使用与该用户名匹配的资源池。
root.[username]:该放置规则用于匹配与用户名一致的资源池。(不推荐使用)
已在运行时指定:该放置规则主要使用在运行时指定的资源池。
放置规则的判断方式,根据放置规则的顺序1、2、3…进行判断,判断到满足条件的放置规则后,后续的规则不再进行匹配。
配置用户限制
1. 单击策略设置中的用户限制即可进入用户限制页面,单击新建用户限制即可进行用户限制的新建。
2. 填写用户名称和同时运行应用程序上限。
3. 在调度器选择时,支持全局维度设置“程序上限”,默认不限制,单用户设置大于全局维度设置。
说明:
1. 全局维度设置“程序上限”为2,未指定用户限制时,所有用户同时提交运行应用程序上限数为2。
2. 全局维度设置“程序上限”为2,指定新建用户“use-1”且提交任务上限为3,此时除“use-1”用户同时可提交3个运行应用程序外,其余用户均只能同时提交运行应用程序上限数为2。
部署生效
1. 涉及所有参数调整时,均需部署生效,未点击部署生效仅保留修改值且不生效。
2. 支持查看具体待生效明细,粒度到配置项参数值。
3. 调度器切换及队列增删需重新启动 ResourceManager(包括开关标签调度),而非调度器切换仅涉及队列等策略调整及标签调度管理标签生效,无需重新启动 ResourceManager;重启 ResourceManager 可能导致服务不可用,请谨慎操作。
4. 部署生效时,整体校验子父队列关系,子队列累计和需等于100%;提交时校验。