介绍

社区版具备task级别的资源管控,同时支持对user和单个query的计算资源分配,分配更灵活。
下面的示例将为您演示如何在安全管理组件Guardian上配置Furion Scheduler来对队列资源进行配额与权限管理。

能力演示

支持数据库计算配额,支持FIFO和FAIR两种不同的任务调度机制,支持队列间的资源隔离。

演示示例视频:

TDH社区版能力演示_计算隔离(离线跑批、OLAP分析业务)

详细操作

分配队列计算资源

在多个租户共用资源的场景下,可能因资源被批处理任务抢占或被多个小任务长时间占用,进而导致部分任务无法得到处理。为精细化管控资源和提升 CPU 利用率,Inceptor 基于 FAIR(公平调度),新增了 FURION 调度策略,它采用加权的调度排序算法,同时将调度粒度缩小至任务级,此外还通过树形结构构建队列关系,可根据节点在调度指标上的关系决定调度顺序。

接下来将介绍如何开启 FURION 调度策略并分配计算资源。

1. 准备工作

默认情况,Inceptor 采用 FIFO(先进先出)调度策略,在授予计算配额前,您需要跟随下述步骤,开启 Furion 调度策略。

① 登录 Transwarp Manager 平台;

② 在页面左侧,单击仪表盘 > 集群,找到并单击 Quark 服务;

③ 单击配置页签,然后单击页面右侧的添加自定义参数;

④ 在弹出的对话框中,根据下述说明完成参数配置,然后单击确定;

  • 配置项:填写为 spark.guardian.enabled。
  • 值:填写为 true。
  • 配置文件:选择为 hive-site.xml

⑤ 搜索 inceptor.scheduler.enabled 参数,将其值修改为 true;

⑥ 在页面右上角,选择 … > 配置服务,在弹出的对话框中单击确定;

⑦ 等待配置应用完成后,单击重启;

注意:重启该服务可能导致业务短暂不可用,请在业务低峰期或运维窗口期操作。

2. 实际业务操作

假设本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

group BY

    l_key,

    c_custkey,

    c_name,

    c_acctbal,

    c_phone,

    n_name,

    c_address,

    c_comment

order by

    revenue DESC

;

OLAP分析业务实操

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;

友情链接:

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐