StarRocks存算一体集群资源预估

官方文档:规划 StarRocks 集群 | StarRocks

集群:3FE+3BE

FE机器配置:

1、CPU:官方推荐每个 FE 节点分配 8c16g

2、磁盘:官方推荐每个 FE 节点分配100g的 HDD

个人觉得4c8g就可以了,FE 节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。

BE机器配置:

1、官方推荐每个BE 节点分配16c64g(高度并发或复杂的查询)

2、磁盘:这个得根据业务数据来做一个计算,假设日均数据1000w,三个副本,下面写一个计算过程

以下表为例:
CREATE TABLE `ad_events` (
`event_time` DATETIME NOT NULL COMMENT '时间',
`event_time_hour` DATETIME NOT NULL COMMENT '时间(分、秒为0)',
`event_type` TINYINT(4) NOT NULL COMMENT '事件类型(1:请求,2:展示,3:点击)',
`user_id` INT(11) NOT NULL COMMENT '用户ID(映射为整数)',
`jhn_more` TINYINT(4) NOT NULL COMMENT '是否聚合',
`ad_site_id` VARCHAR(128) NOT NULL COMMENT '代码位id',
`client_type` TINYINT(4) NOT NULL COMMENT '客户端类型',
`my_app_id` VARCHAR(64) NOT NULL COMMENT '应用id',
`ad_type` VARCHAR(32) NOT NULL COMMENT '广告类型',
`platform` TINYINT(4) NOT NULL COMMENT '广告源',
`device_id` VARCHAR(64) NOT NULL COMMENT '设备号'
)
COLLATE='utf8_general_ci'
ENGINE=OLAP
PARTITION BY date_trunc('month', event_time) # 按月分区
DISTRIBUTED BY HASH(`user_id`) BUCKETS 100
PROPERTIES (
"compression" = "LZ4", # 存储算法
"fast_schema_evolution" = "true",
"partition_live_number" = "12", # 保留12个月数据,就是1年的数据
"replicated_storage" = "true",
"replication_num" = "3"  # 3个副本
);

表数据特点:数据大小 + LZ4存储算法 + 保留1年数据 + 3个副本

1、单行数据大小估算​​:
字段名    类型    字节数(估算) 说明
event_time   DATETIME  8    日期时间
event_time_hour  DATETIME  8    日期时间(精确到小时)
event_type   TINYINT   1    整型
user_id    INT    4    整型
jhn_more   TINYINT   1    整型
ad_site_id   VARCHAR(128) ~150(平均)  按平均长度50字符 + 编码开销
client_type   TINYINT   1 整型
my_app_id   VARCHAR(64)  ~90(平均)  按平均长度30字符 + 编码开销
ad_type    VARCHAR(32)  ~30(平均)  按平均长度10字符 + 编码开销
platform   TINYINT   1    整型
device_id   VARCHAR(64)  ~90(平均)  按平均长度30字符 + 编码开销

​​单行总大小​​:
8 + 8 + 1 + 4 + 1 + 150 + 1 + 90 + 30 + 1 + 90 ≈ 384 字节

2、估算每日数据量:​​1000w条/天
10,000,000 条/天 × 384 字节/条 = 3,840,000,000 字节 ≈ 3.56 GB/天

3、LZ4存储算法压缩
假设压缩率为 ​​3倍​​:3.56 GB/天 ÷ 3 ≈ 1.19 GB/天

4、总数据量(保留1年)
未压缩:3.56 GB/天 × 365 天 = 1,298.8 GB ≈ 1.2 TB
压缩后:1.19 GB/天 × 365 天 = 434.35 GB
含3副本的总磁盘占用:434.35 GB × 3 = 1,303.05 GB ≈ 1.3 TB

1~4步计算方式为官方的大致估算,下面5~6步为ai推测

5、OLAP 引擎默认生成主键索引和 Bloom Filter 索引,可能增加 ​​20%~30%​​ 空间
1.3 TB × 1.3 ≈ 1.69 TB

6、元数据、日志等额外占用约 ​​5%~10%​​。
1.69 TB × 1.1 ≈ 1.86 TB

磁盘规划​​
​​保守估计​​:至少预留 ​​2~2.5 TB​​ 磁盘空间。
​​安全边际​​:建议按 ​​3 TB​​ 规划,应对数据增长波动

跟预估结果,每台BE节点机器磁盘1TB,并且需要对BE节点磁盘做监控

个人见解:上述BE16c64g是官方基于在大型数据集上处理高度并发或复杂的查询时的配置,如果不是这种场景,对数据有效的分区过滤(表设计很重要),可以使用8c16g或8c32g即可。

你可能感兴趣的:(数据库,大数据)