news 2026/8/7 23:37:50

基于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/8/7 18:31:47

SIEMENS 6SL3210-1PE33-0CL0 变频器

常见故障及解决方法‌通信故障‌‌原因‌&#xff1a;通信线路松动、参数设置错误&#xff08;如波特率、设备名称不匹配&#xff09;或接口损坏。‌解决‌&#xff1a;检查线路连接&#xff0c;核对参数一致性&#xff0c;更换损坏接口。‌过流/过压/欠压‌‌过流‌&#xff1…

作者头像 李华
网站建设 2026/8/7 18:31:46

软件测试常用的7种方法,最后一个是升职加薪关键!(零基础小白转行IT互联网高效进阶)

一般而言&#xff0c;软件测试方法分为黑盒测试、白盒测试、灰盒测试、静态测试、动态测试、手动测试、自动化测试和探索性测试等类型。 【1】黑盒测试 黑盒测试又称功能测试、数据驱动测试或基于需求规格说明书的功能测试。该测试方法验证被测对象使用质量及外部质量表现。 …

作者头像 李华
网站建设 2026/8/7 18:31:06

【RTOS】EasyLog的移植与使用

当前log的突出问题&#xff1a; ①log不方便定位到源程序所在位置 ②log不分主次&#xff0c;比较难生成想要的信息 1. 彩色log 1.1 编译器内置宏&#xff1a;__FILE__,__LINE__ led1下直接打印出当前文件的行号和名字 led2复制粘贴过来&#xff0c;改一下引脚 实验现象 哎…

作者头像 李华
网站建设 2026/8/7 15:37:14

在数据库里玩“平行宇宙”:MatrixOne Data Branch 让数据也拥有Git 的分支/合并/对比/回滚(含跨集群同步)

这篇文章讲一件事&#xff1a;当数据像代码一样频繁迭代时&#xff0c;数据库内生的“分支工作流”会比备份/复制更可靠、更省钱、更工程化。 1. 从一个真实的“数据事故现场”开始 当你的 AI 模型不慎清空了核心数据库&#xff0c;或者错误地注入了大量虚假数据&#xff0c;传…

作者头像 李华
网站建设 2026/8/7 22:52:44

基于单片机的全自动洗衣机系统的设计

基于单片机的全自动洗衣机系统的设计 第一章 引言 传统洗衣机依赖人工手动控制进水、洗涤、漂洗、脱水等流程&#xff0c;操作繁琐且水资源与电能浪费严重。随着智能家居技术的发展&#xff0c;全自动洗衣机成为家庭生活的主流需求&#xff0c;其核心在于通过智能控制实现洗衣流…

作者头像 李华
网站建设 2026/8/7 22:52:47

5.6 模型部署与智能体集成实战

5.6 模型部署与智能体集成实战 直播导语:同学们,欢迎来到我们《Agentic AI 智能体开发行动营》的最后一次直播课!在过去的五周里,我们一起经历了一段非凡的旅程:从 Function Calling 的“第一次接触”,到 LangGraph 的“图之思维”,再到“旅小智”的“全栈出海”,最终我…

作者头像 李华