概要说明
Inceptor Scheduler支持三种资源调度策略:FIFO、FAIR、FURION。
其中FIFO和FAIR是兼容了Spark中对应的调度算法,管理的粒度是TaskSet。FURION是Inceptor中独特的调度策略,它沿用了FAIR调度方式,不同的是FURION采用树形结构的形式管理资源队列,并将管理粒度细化到Task。
注意:xml方式并不推荐,优先建议走Guardian页面的方式。
该方法只适用于 TDH Enterprise 以下版本。
如果是 Enterprise 及以上版本的许可证,强烈推荐走 Guardian 页面配置;
详细说明
1、FIFO:先进先出是最简单的模式,它根据所有提交的任务按照顺序逐一执行。把应用按提交的顺序排成一个先进先出的队列,在进行资源分配的时候,先给队列中
2、FAIR:采用相对于FIFO更加公平的调度方式。Fair调度器允许用户创建多个平行的资源池(队列),作业可以指定到某个队列中。每个资源池具有各自的weight和minShare:
- weight表示当前资源池相对于其他资源池可以获得的资源比例,以此体现资源池的优先级;
- minShare表示资源池最小的资源分配,从而保证队列总是可以获得一定的资源,而不用改变优先级。
3、FURION:FURION模式沿袭了FAIR的调度算法,都是完全公平策略的一种实现,并且采用采用加权的排序调度算法。与FAIR不同的是,FURION将管理粒度缩小至Task。并且采用了树形结构构建队列关系,调度指标有CPU资源数量和比值、队列权重、运行任务数。每个队列都是树形结构中的一个节点,根据节点中的父子和兄弟关系在调度指标上的关系决定调度顺序。FURION内的每个节点都可以有自己的子节点,每个节点下的资源由其子节点共同分配。
操作步骤
使用 furion.xml 来配置 furion 调度模式时,一定要关闭 inceptor.scheduler.enabled ,也就是把这个参数的值设置为 false 。
- 编写 furion.xml 文件
- 通过 Manager 修改 Inceptor 配置,并重启生效
- 提交 sql,在 4040 验证
1、编写 furion.xml 文件
FURION 模式是基于XML方式进行配置,furion.xml 可以参照 furion.xml.template 文件;
furion-example.xml 配置文件示例如下:
该配置有如下特性:
- 该配置文件在系统启动时一次性加载。
- 资源池名称不区分大小写,但是属性名及值大小写敏感。
- 可配置多级的树形结构,树的叶子节点,为用户可使用的资源池,非叶子节点为调度辅助节点。
- 有效的配置需要满足 weight 和 ratio 值的约束。
FURION 中每个节点可配置属性值包括:
- weight:控制每个节点的优先级,值越大对系统资源的使用优先级越高。注:整数值,默认1
- rsvCPUNums: 每个节点的预留资源(CPU核数目)。每个节点的可见系统资源为(系统总核数 – 其他节点的预留总核数)。即使该节点或子节点中没有运行任务,这部分资源也会处于空闲状态。默认0.
- rsvCPURatio: 作用同rsvCPUNums,百分比数值。注:0~100之间。默认0.
- maxCPUNums: 每个节点的最大资源量(CPU核数目)。该值控制节点的最大资源使用量,即超过该限制的资源池的任务将不再被调度,直到节点有空闲资源为止。
- maxCPURatio: 作用同 maxCPUNums, 百分比数值。注:0~100之间。默认100.
- scheduler: 每个资源池内部的调度算法,可为 FIFO 或 FAIR。默认FIFO.
2、通过 Manager 修改 Inceptor 配置,并重启生效
通过 Manager 配置 FURION(类FAIR配置方式,仅适用于TDH 5.1.3及以后版本);
-Dspark.scheduler.mode=FURION -Dngmr.furion.desc.xml.filename=/etc/inceptor1/conf/furion.xml
PS:要指定Inceptor Server 所在节点上的 xml 文件配置的绝对路径,inceptor1 为当前 inceptor 的组件名
然后配置服务,重启 Inceptor 生效。重启之后打开4040页面可以看到如下配置:
3、提交 sql,在 4040 验证
使用时需要在SQL中预先执行, set ngmr.furion.pool=<pool_name>
显式指定资源池。
然后可以看到 sql 执行 pool name 已经切换到 TSPOOL1 了。
如果希望关闭 FURION,只需要将Inceptor 配置重置即可
在 Manager 的 Inceptor 配置界面上取消配置项 EXTRA_DRIVER_OPTS 的内容 -Dspark.scheduler.mode=FURION -Dngmr.furion.desc.xml.filename=/etc/inceptor1/conf/furion.xml
然后重启 Inceptor 生效。
常见问题:
- FAIR 和 FURION 的加载优先级是 XML > Guardian > Default 的优先方式
- 如果用户在Manager 页面添加了 EXTRA_DRIVER_OPTS 的内容
-Dspark.scheduler.mode=FURION -Dngmr.furion.desc.xml.filename=/etc/inceptor1/conf/furion.xml
,但是对应路径下没有 XML 配置文件或者 XML 格式或者内容错误,则Inceptor 启动失败; - 采用该方法配置,使用时需要在 SQL 中预先执行,
set ngmr.furion.pool=<pool_name>
显式指定资源池。如果希望默认使用 furion 资源池,可以在 Manager 页面新增参数,如下图。