TDH社区版提供了一种先进的资源管理机制,不仅在 task级别上实现了资源的精细管控,还支持针对 用户和单个查询的计算资源分配。这种灵活性确保了不同业务场景下资源的有效利用与合理分配。通过使用 安全管理组件Guardian上的 Furion Scheduler,可以轻松 配置队列资源的配额与权限管理,为多租户环境下的资源共享提供了强有力的支持。
支持数据库计算配额,支持FIFO和FAIR两种不同的任务调度机制,支持队列间的资源隔离。
在多个租户共用资源的场景下,可能因资源被批处理任务抢占或被多个小任务长时间占用,进而导致部分任务无法得到处理。为精细化管控资源和提升 CPU 利用率,Inceptor 基于
FAIR(公平调度),新增了
FURION 调度策略,它采用
加权的调度排序算法,同时将调度粒度缩小至任务级,此外还通过树形结构构建队列关系,可根据节点在调度指标上的关系决定调度顺序。
接下来将介绍如何开启 FURION 调度策略并分配计算资源。
默认情况,Inceptor 采用 FIFO(先进先出)调度策略,在授予计算配额前,您需要跟随下述步骤,开启 Furion 调度策略。
① 登录 Transwarp Manager 平台;
② 在页面左侧,单击仪表盘 > 集群,找到并单击 Quark 服务;
③ 单击配置页签,然后单击页面右侧的添加自定义参数;
④ 在弹出的对话框中,根据下述说明完成参数配置,然后单击确定;
- 配置项:填写为 spark.guardian.enabled。
- 值:填写为 true。
- 配置文件:选择为 hive-site.xml
⑤ 搜索 inceptor.scheduler.enabled 参数,将其值修改为 true;
⑥ 在页面右上角,选择 … > 配置服务,在弹出的对话框中单击确定;
⑦ 等待配置应用完成后,单击重启;
注意:
重启该服务可能导致业务短暂不可用,请在业务低峰期或运维窗口期操作。
假设本demo基于Inceptor 建立了数据服务平台,目前主要有跑批和探索分析的业务场景,队列以离线跑批业务优先级最高,分析业务次之。我们希望借助队列调度策略能力,实现下述需求,从而实现基于业务特性分配计算资源,提升利用率和效率。
接下来,将举例如何配置队列来实现上述需求(仅做示例哦,没那么严谨,实际还需参考自身业务)。
① 登录 Guardian 平台;
② 在顶部菜单栏,单击权限,然后选择 INCEPTOR > Quark1;
③ 单击计算配额页签;
④ 在 Furion 调度配置区域框右侧,单击编辑;
⑤ 单击 root 队列右侧的 + 图标;
⑥ 在弹出的对话框中,根据下述说明完成配置;
- Queue 名称:填写队列名称,本案例填写为 query。
- 权重:权重数字越大,优先级越高。
- 预留百分比:要预留独享的 CPU 百分比(相对于集群的总 CPU 核数),该资源不与同级别的队列共享。
- 预留 CPU 核数:要预留独享的 CPU 核数,该配置与预留百分比配置一项即可。
- 最大 CPU 百分比:队列可使用的 CPU 资源上限百分比,超过该上限的队列中的任务将不再被调度。
- 最大 CPU 核数:队列可使用的最大 CPU 核数,该配置与最大 CPU 百分比配置一项即可。
- 调度策略:根据业务需求选择队列内任务的调度策略。
- FIFO:先进先出调度策略,根据任务提交顺序分配资源并执行,可能因某个负载较重的任务而阻塞后续任务。
- FAIR:公平调度策略,第一个任务到达时会将队列所有资源给任务,当第二个任务到达时,系统会分一半的资源给该任务,以此类推。
⑦ 接下来就可以参照步骤5为跑批、分析业务创建相应的队列,配置完成后单击保存即可(下图仅做示例);
⑧ 在页面下方,可以设置单个队列/连接/用户可执行的最大 SQL 数量。
⑨ 验证配置并指定队列来执行 SQL 语句,该操作为可选项,按需选择即可,如有需要可参考 Inceptor开发者指南--资源与权限管理章节;
set ngmr.furion.pool = q1; -- 主表与维表关联跑批入数 TRUNCATE TABLE ce_demo.cust_return_info; INSERT INTO ce_demo.cust_return_info SELECT c_custkey, c_name, sum(l_extendedprice * (1 - l_discount)) as revenue, c_acctbal, n_name, c_address, c_phone, c_comment FROM ce_demo.lineitem_order_cust, ce_demo.nation WHERE l_shipdate >= date '1995-06-01' and l_shipdate < add_months(date '1995-06-01', 1) and l_returnflag = 'R' and c_nationkey = n_nationkey GTOUP BY l_key, c_custkey, c_name, c_acctbal, c_phone, n_name, c_address, c_comment ORDER BY revenue DESC ;
set ngmr.furion.pool = q2;
-- 单表统计分析
SELECT
l_shipmode,
sum(case
when o_orderpriority = '1-URGENT'
or o_orderpriority = '2-HIGH'
then 1
else 0
end) as high_line_count,
sum(case
when o_orderpriority <> '1-URGENT'
and o_orderpriority <> '2-HIGH'
then 1
else 0
end) as low_line_count
FROM
ce_demo.lineitem_order_cust
WHERE l_shipmode in ('MAIL', 'SHIP')
and l_commitdate < l_receiptdate
and l_shipdate < l_commitdate
and l_shipdate >= date '1994-01-01'
and l_shipdate < add_months(date '1994-01-01', 3)
GROUP BY
l_shipmode
ORDER BY
l_shipmode
limit 10;
-- 多表关联分析
SELECT
100.00 * sum(case
when p_type like 'PROMO%'
then l_extendedprice * (1 - l_discount)
else 0
end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue
FROM
ce_demo.lineitem_order_cust,
ce_demo.part
WHERE
l_partkey = p_partkey
and l_shipdate >= date '1995-09-01'
and l_shipdate < add_months(date '1995-09-01', 1)
limit 10;
通过上述介绍与演示,我们可以看到Inceptor在 资源管理和调度方面提供了极为强大且灵活的支持。不论是采用精确控制计算资源分配的FURION调度策略,还是通过Guardian平台直观且便捷地配置队列资源配额与权限管理,用户都能够高效地实现对计算资源的优化配置和使用。这不仅提升了资源利用率,也为多租户环境下的资源共享提供了坚实的基础。
此外,无论是为了满足离线跑批业务的高优先级需求,还是在线分析业务的快速响应要求,Inceptor都展示了其卓越的适应能力和效率提升潜力。借助于详细的步骤指导和实际操作示例,用户可以轻松上手,根据自身业务特点灵活调整资源配置,最大化利用集群性能。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70046520/viewspace-3087439/ ,如需转载,请注明出处,否则将追究法律责任。