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 TB1~4步计算方式为官方的大致估算,下面5~6步为ai推测5、OLAP 引擎默认生成主键索引和 Bloom Filter 索引,可能增加 20%~30% 空间
1.3 TB × 1.3 ≈ 1.69 TB6、元数据、日志等额外占用约 5%~10%。
1.69 TB × 1.1 ≈ 1.86 TB
磁盘规划
保守估计:至少预留 2~2.5 TB 磁盘空间。
安全边际:建议按 3 TB 规划,应对数据增长波动
跟预估结果,每台BE节点机器磁盘1TB,并且需要对BE节点磁盘做监控
个人见解:上述BE16c64g是官方基于在大型数据集上处理高度并发或复杂的查询时的配置,如果不是这种场景,对数据有效的分区过滤(表设计很重要),可以使用8g16g