news 2026/2/5 0:50:55

基于doris manager部署Doris存算集群及测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于doris manager部署Doris存算集群及测试

1. 集群架构

2. 节点规划

机器服务cpu内存SSD
共享存储

hdfs://hdfs.xxxx.net:9000

(我用的商业的,没有自己部一套开源的)

\\\
服务器-1

doris-manager(版本直接搞最新的,越新越好用)

48200
服务器-2mysql(保存doris-manager元数据,自己部署)48200
服务器-3fe、meta service、foundationDB
混部版本V3.0.8
16641000
服务器-5
服务器-6
服务器-7be(compute-group-1)版本V3.0.8832300
服务器-8be(compute-group-2)版本V3.0.8832300
服务器-9
服务器-10be(compute-group-3)版本V3.0.8832300
服务器-11
服务器-12

3. Doris manager部署

部署地址:部署 Manager | SelectDB Docshttps://docs.selectdb.com/enterprise/management-guide/doris-manager-management/deploy-doris-manager

修改配置文件webserver/conf/manager.conf文件可以配置 WebServer 服务

DB_TYPEmysql服务依赖的数据库类型:mysql、h2 或者 postgresql
DB_HOST你自己的数据库的访问地址,只在 DB_TYPE 为 mysql/postgresql 时生效
DB_PORT你自己的数据库的访问端口,只在 DB_TYPE 为 mysql/postgresql 时生效
DB_USER你自己的数据库的访问用户,只在 DB_TYPE 为 mysql/postgresql 时生效
DB_PASS你自己的数据库的访问密码,只在 DB_TYPE 为 mysql/postgresql 时生效
DB_DBNAME你自己的数据库的访问库名,只在 DB_TYPE 为 mysql/postgresql 时生效

登录服务器2:8004端口

4. 存算分离集群部署

4.1 目录规划

文件dir
部署/检测脚本/opt/software
安装目录/opt/module
fe元数据存放位置/data/doris/fe/doris-meta
fe日志目录/data/doris/fe/log
be日志目录/data/doris/be/log
be文件缓存目录/data/doris/be/file_cache

4.2 详细部署步骤

见官网:部署存算分离集群 | SelectDB Docshttps://docs.selectdb.com/enterprise/management-guide/doris-cluster-management/deploy-cluster/deploy-separating-storage-compute-cluster

大功告成

5. 测试

5.1 Storage Vault

Storage Vault 是 Doris 在存算分离模式中所使用的远程共享存储,可配置一个或多个 Storage Vault,可将不同表存储在不同 Storage Vault 上。

5.1.1 创建Storage Vault

创建基于 HDFS 的存算分离模式 Doris 集群,需要确保所有的节点 (包括 FE / BE 节点、Meta Service) 均有权限访问所指定的 HDFS。

CREATE STORAGE VAULT IF NOT EXISTS hdfs_demo_a PROPERTIES ( "type" = "hdfs", -- required "fs.defaultFS" = "hdfs://hdfs.xxxx.net:9000", -- required "path_prefix" = "bigdata/data_a", -- optional, 一般按照业务名称填写 "hadoop.username" = "doris" ); CREATE STORAGE VAULT IF NOT EXISTS hdfs_demo_b PROPERTIES ( "type" = "hdfs", -- required "fs.defaultFS" = "hdfs://hdfs.xxxx.net:9000", -- required "path_prefix" = "bigdata/data_b", -- optional, 一般按照业务名称填写 "hadoop.username" = "doris" ); CREATE STORAGE VAULT IF NOT EXISTS hdfs_vault PROPERTIES ( "type" = "hdfs", -- required "fs.defaultFS" = "hdfs://hdfs.xxxx.net:9000", -- required "path_prefix" = "doris", -- optional, 一般按照业务名称填写 "hadoop.username" = "doris" );

5.2.2 设置默认Storage Vault

SET hdfs_vault AS DEFAULT STORAGE VAULT

5.2.3 查看Storage Vault

show STORAGE vaults

我们创建3个,doris-manager帮我们部署doris时,自动帮我们创建了一个默认的,这里我新建了一个修改为默认的。

5.2.4 建表测试

5.2.4.1 库没设置,表没设置时,且用户有hdfs_vault\hdfs_demo_a\hdfs_demo_b的权限时
create database if not EXISTS ods; CREATE TABLE IF NOT EXISTS example_tbl_unique ( user_id LARGEINT NOT NULL, user_name VARCHAR(50) NOT NULL, city VARCHAR(20), age SMALLINT, sex TINYINT ) UNIQUE KEY(user_id, user_name) DISTRIBUTED BY HASH(user_id) BUCKETS 10 PROPERTIES ( "enable_unique_key_merge_on_write" = "true" ); show create TABLE ods.example_tbl_unique --结果 CREATE TABLE `example_tbl_unique` ( `user_id` largeint NOT NULL, `user_name` varchar(50) NOT NULL, `city` varchar(20) NULL, `age` smallint NULL, `sex` tinyint NULL ) ENGINE=OLAP UNIQUE KEY(`user_id`, `user_name`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 10 PROPERTIES ( "file_cache_ttl_seconds" = "0", "is_being_synced" = "false", "storage_medium" = "hdd", "storage_format" = "V2", "inverted_index_storage_format" = "V2", "enable_unique_key_merge_on_write" = "true", "light_schema_change" = "true", "storage_vault_id" = "2", "storage_vault_name" = "hdfs_vault", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728", "enable_mow_light_delete" = "false" );
5.2.4.2 库设置,表没设置时,且用户有hdfs_vault\hdfs_demo_a\hdfs_demo_b的权限时
CREATE DATABASE IF NOT EXISTS `ods_a` PROPERTIES ( "storage_vault_name" = "hdfs_demo_a" ); CREATE TABLE IF NOT EXISTS ods_a.example_tbl_unique ( user_id LARGEINT NOT NULL, user_name VARCHAR(50) NOT NULL, city VARCHAR(20), age SMALLINT, sex TINYINT ) UNIQUE KEY(user_id, user_name) DISTRIBUTED BY HASH(user_id) BUCKETS 10 PROPERTIES ( "enable_unique_key_merge_on_write" = "true" ); show create table ods_a.example_tbl_unique CREATE TABLE `example_tbl_unique` ( `user_id` largeint NOT NULL, `user_name` varchar(50) NOT NULL, `city` varchar(20) NULL, `age` smallint NULL, `sex` tinyint NULL ) ENGINE=OLAP UNIQUE KEY(`user_id`, `user_name`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 10 PROPERTIES ( "file_cache_ttl_seconds" = "0", "is_being_synced" = "false", "storage_medium" = "hdd", "storage_format" = "V2", "inverted_index_storage_format" = "V2", "enable_unique_key_merge_on_write" = "true", "light_schema_change" = "true", "storage_vault_id" = "3", "storage_vault_name" = "hdfs_demo_a", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728", "enable_mow_light_delete" = "false" );
5.2.4.3 库设置a,表设置b时,且用户有hdfs_vault\hdfs_demo_a\hdfs_demo_b的权限时
CREATE DATABASE IF NOT EXISTS `ods_a` PROPERTIES ( "storage_vault_name" = "hdfs_demo_a" ); CREATE TABLE IF NOT EXISTS ods_a.example_tbl_unique_b ( user_id LARGEINT NOT NULL, user_name VARCHAR(50) NOT NULL, city VARCHAR(20), age SMALLINT, sex TINYINT ) UNIQUE KEY(user_id, user_name) DISTRIBUTED BY HASH(user_id) BUCKETS 10 PROPERTIES ( "enable_unique_key_merge_on_write" = "true", "storage_vault_name" = "hdfs_vault_b" ); show create table ods_a.example_tbl_unique_b CREATE TABLE `example_tbl_unique_b` ( `user_id` largeint NOT NULL, `user_name` varchar(50) NOT NULL, `city` varchar(20) NULL, `age` smallint NULL, `sex` tinyint NULL ) ENGINE=OLAP UNIQUE KEY(`user_id`, `user_name`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 10 PROPERTIES ( "file_cache_ttl_seconds" = "0", "is_being_synced" = "false", "storage_medium" = "hdd", "storage_format" = "V2", "inverted_index_storage_format" = "V2", "enable_unique_key_merge_on_write" = "true", "light_schema_change" = "true", "storage_vault_id" = "4", "storage_vault_name" = "hdfs_demo_b", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728", "enable_mow_light_delete" = "false" );
5.2.4.4 库没设置,表没设置,用户没有hdfs_vault\hdfs_demo_a\hdfs_demo_b的权限时

(1)在ods库创建表时,报异常。没有hdfs_vault权限;

(2)在ods库查看表时,有表信息,可以读写数据;

(3)在ods_a库查看表时,有表信息,可以读写数据;

(4)在任何库,只要用户对这个库有drop权限就可以删除任意表;

5.2.5 授予/撤销权限

GRANT USAGE_PRIV ON STORAGE VAULT <vault_name> TO { ROLE | USER } {<role> | <user>} REVOKE USAGE_PRIV ON STORAGE VAULT <vault_name> FROM { ROLE | USER } {<role> | <user>}

6. 计算组

在存算分离架构下,可以将一个或多个计算节点 (BE) 组成一个计算组 (Compute Group)。本文档介绍如何使用计算组,其中涉及的操作包括:

  • 查看所有计算组
  • 计算组授权
  • 在用户级别绑定计算组 (default_compute_group) 以达到用户级别的隔离效果

6.1 查看所有计算组

使用SHOW COMPUTE GROUPS命令可以查看当前仓库中的所有计算组。返回结果会根据用户权限级别显示不同内容:

  • 具有ADMIN权限的用户可以查看所有计算组
  • 普通用户只能查看其拥有使用权限(USAGE_PRIV)的计算组
  • 如果用户没有任何计算组的使用权限,则返回结果为空
SHOW COMPUTE GROUPS;

6.2 计算组权限

6.2.1 授予计算组访问权限

前置条件:当前操作用户具备ADMIN权限,或者当前用户属于 admin role。

GRANT USAGE_PRIV ON COMPUTE GROUP {compute_group_name} TO {user};

6.2.2 撤销计算组访问权限

前置条件:当前操作用户具备ADMIN权限,或者当前用户属于 admin role。

GRANT USAGE_PRIV ON COMPUTE GROUP {compute_group_name} TO {user};

6.2.3 撤销计算组访问权限

前置条件:当前操作用户具备ADMIN权限,或者当前用户属于 admin role。

REVOKE USAGE_PRIV ON COMPUTE GROUP {compute_group_name} FROM {user};

6.2.4 设置默认计算组

为当前用户设置默认计算组(此操作需要当前用户已经拥有计算组的使用权限):

SET PROPERTY 'default_compute_group' = '{clusterName}';

为其他用户设置默认计算组(此操作需要 Admin 权限):

SET PROPERTY FOR {user} 'default_compute_group' = '{clusterName}';

查看当前用户默认计算组,返回结果中default_compute_group的值即为默认计算组:

SHOW PROPERTY;

查看其他用户默认计算组,此操作需要当前用户具备 admin 权限,返回结果中default_compute_group的值即为默认计算组:

SHOW PROPERTY FOR {user};

查看当前仓库下所有可用的计算组:

SHOW COMPUTE GROUPS;

6.2.5 没有任务一个计算组时

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 0:02:35

使用Postman之上一个接口的返回值作为下一个接口的入参

在使用Postman做接口测试的时候&#xff0c;在多个接口的测试中&#xff0c;如果需要上一个接口的返回值作为下一个接口的入参&#xff0c;其基本思路是&#xff1a; 1、获取上一个接口的返回值 2、将返回值设置成环境变量或者全局变量 3、设置下一个接口的参数形式 下面我…

作者头像 李华
网站建设 2026/2/4 5:30:40

4.6 你的 Agent 安全吗?Prompt 注入、数据泄露攻击模式与防御策略

4.6 你的 Agent 安全吗?Prompt 注入、数据泄露攻击模式与防御策略 导语:在上一章,我们构建了一个“AI 防火墙”,学会了如何检测正在发生的攻击。然而,在安全领域,仅仅满足于“发现问题”是远远不够的。一个真正健壮的系统,需要构建**纵深防御(Defense in Depth)**体系…

作者头像 李华
网站建设 2026/2/4 5:05:17

5.4 模型评估与优化:科学评估微调效果

5.4 模型评估与优化:科学评估微调效果 导语:在上一章的“炼丹”实战中,我们成功地微调出了一个“AI 皮肤科医生”模型,并通过几个简单的对话,直观地感受到了它的变化。但这种“感觉”是主观的、不可靠的。要将“炼丹”从一门“玄学”变为一门“科学”,我们必须引入客观、…

作者头像 李华
网站建设 2026/2/4 16:00:47

基于单片机声光控灯系统设计

基于单片机的声光控灯系统设计 第一章 绪论 传统声光控灯多采用模拟电路设计&#xff0c;存在明显局限&#xff1a;光线检测精度低&#xff08;易受环境干扰误触发&#xff09;、声音识别范围窄&#xff08;仅响应特定分贝噪音&#xff09;、延时时间固定&#xff08;无法适配不…

作者头像 李华
网站建设 2026/2/4 6:21:16

万亿市场!2025年大模型革命:技术演进、应用落地与学习路径全解析!

简介 2025年AI产业进入商业爆发期&#xff0c;大模型从技术竞赛转向价值导向&#xff0c;多模态融合、轻量化部署、高实用性优化成为主流趋势。算力产业链完善支撑产业基础&#xff0c;商业化落地聚焦垂直场景&#xff0c;具身智能与自动驾驶打开万亿市场。中国AI市场规模突破1…

作者头像 李华
网站建设 2026/2/3 13:54:57

Vue.js 组件全面学习指南

1 学习指南1.1 学习目标认知层级目标描述对应章节了解掌握组件化开发思想与核心价值2.1 组件化思想掌握组件注册、父子通信基础用法3.1-3.2、4.1-4.2熟练高级组件特性与复杂场景应用4.3-4.5、6.0应用独立完成中型项目组件拆分与实现5.0 实战案例1.2 前置知识掌握 Vue 基础语法&…

作者头像 李华