资源隔离
本文介绍如何使用资源隔离功能。
自 2.2 版本起,StarRocks 支持资源组管理,集群可以通过设置资源组(Resource Group)的方式限制查询对资源的消耗,实现多租户之间的资源隔离与合理利用。在 2.3 版本中,StarRocks 支持限制大查询,集群可以进一步控制大查询对资源的消耗,避免少数的大查询耗尽系统资源,进而影响系统稳定性。StarRocks 2.5 版本支持通过资源组对导入计算进行资源隔离,从而间接控制导入任务对集群资源的消耗。自 v3.3.5 起,StarRocks 支持对 CPU 资源进行硬隔离。
通过资源隔离功能,您可以将 BE 节点的计算资源划分成若干个资源组,并且为每个资源组关联一个或多个分类器(Classifier)。根据在分类器中设置的条件,系统将匹配查询任务的对应信息。当您发起查询任务时,分类器会根据查询任务的相关信息进行匹配。其中匹配度最高的分类器才会生效,系统则会根据生效的分类器所属的资源组为查询任务分配资源。
在后续版本中,我们将会持续强化资源隔离功能。
资源隔离功能支持计划
内部表 | 外部表 | 大查询熔断 | INSERT 计算资源隔离 | BROKER LOAD 计算资源隔离 | Routine Load、Stream Load、Schema Change 资源隔离 | CPU 硬隔离 | |
---|---|---|---|---|---|---|---|
2.2 | √ | × | × | × | × | × | x |
2.3 | √ | √ | √ | × | × | × | x |
2.5 | √ | √ | √ | √ | × | × | x |
3.1 & 3.2 | √ | √ | √ | √ | √ | × | x |
3.3.5 及以后 | √ | √ | √ | √ | √ | × | √ |
基本概念
本小节介绍资源隔离功能相关的基本概念。
资源组
通过将 BE 节点划分为若干个资源组 (resource group),系统在执行相应资源组的查询任务时,会按照为该资源组划分的资源配额(CPU 及内存)分配查询资源。
您可以为资源组设置如下的资源限制。
配置名称 | 描述 | 取值范围 | 默认值 |
---|---|---|---|
cpu_weight | 该资源组在一个 BE 节点上调度 CPU 的权重。 | (0, avg_be_cpu_cores ] (大于 0 时生效) | 0 |
exclusive_cpu_cores | 该资源组的 CPU 硬隔离参数。 | (0, min_be_cpu_cores - 1 ] (大于 0 时生效) | 0 |
mem_limit | 该资源组在当前 BE 节点可使用于查询的内存的比例。 | (0, 1] (必填项) | - |
spill_mem_limit_threshold | 该资源组触发落盘的内存占用阈值。 | (0, 1] | 1.0 |
concurrency_limit | 该资源组中并发查询数的上限。 | 整数 (大于 0 才生效) | 0 |
big_query_cpu_second_limit | 该资源组的大查询任务在每个 BE 上可以使用 CPU 的时间上限。 | 整数 (大于 0 才生效) | 0 |
big_query_scan_rows_limit | 该资源组的大查询任务在每个 BE 上可以扫描的行数上限。 | 整数 (大于 0 才生效) | 0 |
big_query_mem_limit | 该资源组的大查询任务在每个 BE 上可以使用的内存上限。 | 整数 (大于 0 才生效) | 0 |