更新时间:2026-01-06 GMT+08:00
分享

配置StarRocks租户

StarRocks的多租户管理,目的是为了多个用户在同一StarRocks集群内进行数据操作时,减少相互之间的干扰,能够将集群资源更合理的分配给各用户。且集成了租户生命周期管理、租户资源配置和租户资源使用统计等功能,为企业提供了成熟的多租户管理模型,实现集中式的租户和业务管理,减少对集群资源的消耗。

  • 资源组:通过将 BE 节点划分为若干个资源组 (resource group),系统在执行相应资源组的查询任务时,会按照为该资源组划分的资源配额(CPU 及内存)分配查询资源。
  • 分类器:您可以为每个资源组关联一个或多个分类器。系统将会根据所有分类器中设置的条件,为每个查询任务选择一个匹配度最高的分类器,并根据生效的分类器所属的资源组为该查询任务分配资源。

使用限制

  • 新建用户默认绑定默认租户normal。
  • 一个用户只能绑定一个租户。
  • 一个租户可以被多个用户绑定。
  • 最多只能创建一个SHORT_QUERY资源组。
  • 租户NORMAL和SHOUT_QUERY,仅支持StarRocks 3.2.8版本。
  • 租户名称不可修改。
  • 租户管理目前只支持StarRocks存算一体集群。
  • 资源组的user字段只能包含数字、字母和下划线,请使用纯用户名,不支持username@host格式的用户名。

前提条件

  • 已创建StarRocks集群,集群运行正常。
  • 已安装MySQL户端。

新建StarRocks租户

  1. 登录表格存储服务控制台
  2. 选择目标集群,单击“集群名称 > 租户管理”进入租户管理页面。
  3. 单击页面右上角“新建租户”,弹出新建租户页面,参照表1为租户配置属性。

    表1 新建租户参数描述

    参数

    取值范围

    描述

    租户名

    -

    指定当前的租户名称。以字母开头,长度为4-64位,只能输入大小写字母、数字和下划线。

    CPU限额

    [1,4]

    该资源组在当前BE节点可使用的CPU核数软上限,实际使用的CPU核数会根据节点资源空闲程度按比例弹性伸缩。

    内存限额

    1~99

    该资源组在当前BE节点可使用于查询的内存(query_pool)占总内存的百分比(%)。

    并发数

    -

    资源组中并发查询数的上限,用以防止并发查询提交过多而导致的过载。

    租户类型

    -

    • 租户类型有NORMAL和SHOUT_QUERY,仅支持StarRocks 3.2.8版本。
    • 默认租户,仅支持StarRocks 3.3.18版本。
      • default_wg:如果普通查询受资源组管理,但是没有匹配到分类器,系统将默认为其分配default_wg。
      • default_mv_wg:如果创建异步物化视图时没有通过resource_group属性指定资源组,该物化视图刷新时,系统将默认为其分配default_mv_wg。

    分类器

    -

    可以为每个资源组关联一个或多个分类器。系统将会根据所有分类器中设置的条件,为每个查询任务选择一个匹配度最高的分类器,并根据生效的分类器所属的资源组为该查询任务分配资源。

  4. 参数配置后单击“保存”,确认新增分类器信息后,单击“确定”租户创建完成。

    如果添加多条,单击“保存并继续添加”,分类器添加完成后单击“保存”,确认新增分类器信息后,单击“确定”租户创建完成。

访问租户资源匹配规则

  • 匹配度计算方式:
    • 如果user一致,则该分类器匹配度增加1。
    • 如果role一致,则该分类器匹配度增加1。
    • 如果query_type一致,则该分类器匹配度增加1 + 1/分类器的query_type数量。
    • 如果查询的db匹配,则匹配度加10。
  • 示例1:多个与查询任务匹配的分类器中,分类器的条件数量越多,匹配度越高。
    分类器B的条件数量比分类器A多,所以B的匹配度比A的高。
    Classifiers A (user='admin')
    Classifiers A (user=admin',role='test')
  • 示例2:如果分类器的条件数量相等,则分类器的条件描述越精确,其匹配度越高。

    分类器C限定的查询类型为“select”,D限定的查询类型为“select”、“insert”,C限定的查询类型数量更少,所以C的匹配度比D高。

    classifier C (user='admin', query_type in ('select'))
    classifier D (user='admin', query_type in ('insert','select'))
  • 示例3:如果多个分类器的匹配度相同,那么会随机选择其中一个分类器。

    如果一个查询同时查询了db1和db2,并且命中的分类器中E和F的匹配度最高,那么会从E和F中随机选择一个。

    classifier E (db='db1')
    classifier F (db='db2')

StarRocks租户常用命令

  • 创建租户和分类器。
    CREATE RESOURCE GROUP group_name 
    TO (
        user='string', 
        role='string', 
        query_type in ('select'), 
        db='db1'
    ) -- 创建分类器,多个分类器间用英文逗号(,)分隔。
    WITH (
        "cpu_core_limit" = "INT",
        "mem_limit" = "m%",
        "concurrency_limit" = "INT",
        "type" = "str" -- 资源组的类型,取值为 normal 或 short_query。
    );
  • user:分类器中用户名。
  • role:分类器中用户绑定的角色。
  • query_type:查询类型包括select、insert。
  • db:查询所访问的数据库。
  • 示例:

    CREATE RESOURCE GROUP group_name1 
    TO (
        user='admin', 
        role='test_role', 
        query_type in ('select'), 
        db='sys'
    ) 
    WITH (
        "cpu_core_limit" = "2",
        "mem_limit" = "20%",
        "big_query_cpu_second_limit" = "100",
        "big_query_scan_rows_limit" = "1000",
        "type" = "normal" -- 资源组的类型,取值为 normal 或 short_query。
    );
    • cpu_core_limit:使用的CPU核心数。
    • mem_limit:最多使用系统总内存的20%。
    • big_query_cpu_second_limit:大查询最多使用100CPU秒。
    • big_query_scan_rows_limit:大查询最多扫描1000行数据。
  • 指定资源组。

    除通过分类器自动指定资源组外,也可以通过会话变量直接指定资源组。

    SET resource_group = 'group_name';
  • 查看资源组和分类器。
    • 查询所有资源组和分类器。
      SHOW RESOURCE GROUPS ALL;
    • 查询和当前用户匹配的资源组和分类器。
      SHOW RESOURCE GROUPS;
    • 查询指定的资源组和分类器。
      SHOW RESOURCE GROUP group_name;
  • 管理资源组配额和分类器。
    • 为已有的资源修改资源配额。
      ALTER RESOURCE GROUP group_name1 WITH (
          'cpu_core_limit' = '3',
          'mem_limit' = '30%'
      );
    • 删除指定资源组。
      DROP RESOURCE GROUP group_name1;
    • 添加新的分类器。
      ALTER RESOURCE GROUP group_name1 ADD (user='user1', role='test_role', query_type in ('select'));
    • 删除指定的分类器。
      ALTER RESOURCE GROUP <group_name> DROP (CLASSIFIER_ID_1, CLASSIFIER_ID_2, ...);

      示例:

      ALTER RESOURCE GROUP group_name1 DROP (51369);
    • 删除所有分类器。
      ALTER RESOURCE GROUP <group_name> DROP ALL;

相关文档