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

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

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

详细操作
分配队列计算资源
在多个租户共用资源的场景下,可能因资源被批处理任务抢占或被多个小任务长时间占用,进而导致部分任务无法得到处理。为精细化管控资源和提升 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
GTOUP 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;



友情链接:

评论
登录后可评论
发布者
星小环分享号
文章
180
问答
205
关注者
27
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入