Apache Doris 资源隔离详解

简介: Apache Doris 资源隔离详解

一、简述

主要是对于BE节点而言

Doris 的多租户和资源隔离方案,主要目的是为了多用户在同一 Doris 集群内进行数据操作时,减少相互之间的干扰,能够将集群资源更合理的分配给各用户。

二、测试体验

2.1 BE节点设置标签

注:一个 BE 只支持设置一个 Tag。

一个 Doris 集群内的 BE 节点可以设置标签(Tag),标签相同的 BE 节点组成一个资源组(Resource Group);资源组可以看作是数据存储和计算的一个管理单元。

2.1.1 分组前

2.1.2 开始分组

-- 3个节点划分成2个资源组
alter system modify backend "be01:9050" set ("tag.location" = "group_a");
alter system modify backend "be02:9050" set ("tag.location" = "group_b");
alter system modify backend "be03:9050" set ("tag.location" = "group_c");

2.1.3 分组后

2.2 根据资源组分布数据

资源组划分好后,可以将用户数据的不同副本分布在不同资源组内。

2.2.1 创建测试表

-- 以SQL99其中一张维表为例,每个资源组放一个副本
create table tpcds.catalog_returns_duplicate
(
    cr_item_sk                integer               not null,
    cr_order_number           integer               not null,
    cr_returned_date_sk       integer                       ,
    cr_returned_time_sk       integer                       ,
    cr_ship_date_sk           integer                       ,
    cr_refunded_customer_sk   integer                       ,
    cr_refunded_cdemo_sk      integer                       ,
    cr_refunded_hdemo_sk      integer                       ,
    cr_refunded_addr_sk       integer                       ,
    cr_returning_customer_sk  integer                       ,
    cr_returning_cdemo_sk     integer                       ,
    cr_returning_hdemo_sk     integer                       ,
    cr_returning_addr_sk      integer                       ,
    cr_call_center_sk         integer                       ,
    cr_catalog_page_sk        integer                       ,
    cr_ship_mode_sk           integer                       ,
    cr_warehouse_sk           integer                       ,--    cr_reason_sk              integer                       ,
    cr_return_quantity        integer                       ,
    cr_return_amount          decimal(7,2)                  ,
    cr_return_tax             decimal(7,2)                  ,
    cr_return_amt_inc_tax     decimal(7,2)                  ,
    cr_fee                    decimal(7,2)                  ,
    cr_return_ship_cost       decimal(7,2)                  ,
    cr_refunded_cash          decimal(7,2)                  ,
    cr_reversed_charge        decimal(7,2)                  ,
    cr_store_credit           decimal(7,2)                  ,
    cr_net_loss               decimal(7,2)                 
)ENGINE=olap 
DUPLICATE KEY(`cr_item_sk`,`cr_order_number`) 
DISTRIBUTED BY HASH(`cr_item_sk`,`cr_order_number`) BUCKETS 10 
PROPERTIES("replication_allocation"
    = "tag.location.group_a:1, tag.location.group_b:1, tag.location.group_c:1");

2.2.2 导入测试数据

-- 随机测试写入几条数据验证
insert into tpcds.catalog_returns_duplicate values
(.....)

2.3 用户资源使用权限控制

通过设置用户的资源使用权限,来限制某一用户的查询,只能使用指定资源组中的节点来执行。

2.3.1 创建测试用户

-- 用户名@用户端连接所在的主机地址(测试不设置密码)
-- 默认为 '%',即表示该用户可以从任意host连接到 DorisDB
CREATE USER 't_rg_user01'@'%';
CREATE USER 't_rg_user02'@'%';
CREATE USER 't_rg_user03'@'%';

2.3.2 授权用户

-- GRANT授权(授予所有库和表的权限给用户)
GRANT SELECT_PRIV ON *.* TO 't_rg_user01'@'%';
GRANT SELECT_PRIV ON *.* TO 't_rg_user02'@'%';
GRANT SELECT_PRIV ON *.* TO 't_rg_user03'@'%';

2.3.3 设置用户资源使用权限

set property for 't_rg_user01' 'resource_tags.location' = 'group_a';
set property for 't_rg_user02' 'resource_tags.location' = 'group_b';
set property for 't_rg_user03' 'resource_tags.location' = 'group_a, group_b, group_c';

2.3.4 验证权限

  1. 准备测试查询SQL
select * from (
select * from catalog_returns_duplicate crd0402
) t1
JOIN
(
select * from catalog_returns_duplicate crd0402
) t2 on t1.cr_item_sk = t2.cr_item_sk
JOIN
(
select * from catalog_returns_duplicate crd0402
) t3 on t2.cr_item_sk = t3.cr_item_sk
JOIN
(
select distinct cr_item_sk from catalog_returns_duplicate crd0402
) t4 on t3.cr_item_sk = t4.cr_item_sk
  1. 开始查询

通过grafana中【be scan rows】图标可以清楚地看到,每个用户使用的资源都基于设置进行了对应的内存隔离。

2.4 读写权限验证

只读不写或只写不读权限验证

-- 用户创建
CREATE USER 't_only_read_user'@'%';
CREATE USER 't_only_write_user'@'%';
-- 对指定的库或表的读取权限
GRANT SELECT_PRIV ON *.* TO 't_only_read_user'@'%';
-- 对指定的库或表的导入权限
GRANT LOAD_PRIV ON *.* TO 't_only_write_user'@'%';

三、优化配置

资源组方法是节点级别的资源隔离和限制。

而在资源组内,依然可能发生资源抢占问题;可以针对对单查询做资源限制功能

3.1 内存限制

-- 设置会话变量 exec_mem_limit。则之后该会话内(连接内)的所有查询都使用这个内存限制。
set exec_mem_limit=1G;
-- 设置全局变量 exec_mem_limit。则之后所有新会话(新连接)的所有查询都使用这个内存限制。
set global exec_mem_limit=1G;
-- 在 SQL 中设置变量 exec_mem_limit。则该变量仅影响这个 SQL。
select /*+ SET_VAR(exec_mem_limit=1G) */ id, name from tbl where xxx;

3.2 CPU限制

-- 设置会话变量 cpu_resource_limit。则之后该会话内(连接内)的所有查询都使用这个CPU限制。
set cpu_resource_limit = 2
-- 设置用户的属性 cpu_resource_limit,则所有该用户的查询情况都使用这个CPU限制。该属性的优先级高于会话变量 cpu_resource_limit
set property for 'user1' 'cpu_resource_limit' = '3';

四、总结

  1. 可以对用户做到查询资源的物理隔离,写入不做资源隔离
  2. 可以对用户做到库表颗粒的权限控制参考用户账户管理
相关文章
|
3月前
|
消息中间件 OLAP Kafka
Apache Doris 实时更新技术揭秘:为何在 OLAP 领域表现卓越?
Apache Doris 为何在 OLAP 领域表现卓越?凭借其主键模型、数据延迟、查询性能、并发处理、易用性等多方面特性的表现,在分析领域展现了独特的实时更新能力。
319 9
|
2月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
427 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
2月前
|
SQL 人工智能 数据挖掘
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
Apache Doris 4.0 原生集成 LLM 函数,将大语言模型能力深度融入 SQL 引擎,实现文本处理智能化与数据分析一体化。通过十大函数,支持智能客服、内容分析、金融风控等场景,提升实时决策效率。采用资源池化管理,保障数据一致性,降低传输开销,毫秒级完成 AI 分析。结合缓存复用、并行执行与权限控制,兼顾性能、成本与安全,推动数据库向 AI 原生演进。
253 0
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
|
3月前
|
存储 分布式计算 Apache
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
小米通过将 Apache Doris(数据库)与 Apache Paimon(数据湖)深度融合,不仅解决了数据湖分析的性能瓶颈,更实现了 “1+1>2” 的协同效应。在这些实践下,小米在湖仓数据分析场景下获得了可观的业务收益。
729 9
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
|
3月前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
552 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
3月前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
259 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
3月前
|
SQL 存储 JSON
Apache Doris 2.1.10 版本正式发布
亲爱的社区小伙伴们,Apache Doris 2.1.10 版本已正式发布。2.1.10 版本对湖仓一体、半结构化数据类型、查询优化器、执行引擎、存储管理进行了若干改进优化。欢迎大家下载使用。
220 5
|
3月前
|
人工智能 自然语言处理 数据挖掘
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
在即将发布的 Apache Doris 4.0 版本中,我们正式引入了一系列 LLM 函数,将前沿的 AI 能力与日常的数据分析相结合,无论是精准提取文本信息,还是对评论进行情感分类,亦或生成精炼的文本摘要,皆可在数据库内部无缝完成。
236 0
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
|
4月前
|
SQL 人工智能 数据挖掘
Apache Doris + MCP:Agent 时代的实时数据分析底座
数据不再是静态的存储对象,而是流动的智能资源;数据库不再是单纯的存储系统,而是智能化的服务平台。Apache Doris 以其在 AI 方向的深度布局和技术创新,正在成为连接数据与智能的重要桥梁。
1101 0
Apache Doris + MCP:Agent 时代的实时数据分析底座
|
3月前
|
存储 人工智能 Apache
ApacheCon 2025中国开源年度报告:Apache Doris 国内第一
在 Apache 基金会管理的近 300 个顶级项目中,Doris 已经成为仅次于 Apache Airflow 的全球第二大影响力项目。
218 0

推荐镜像

更多