本文档提供了创建StarRocks实例时的规格规划及建议,分别针对存算一体版与存算分离版两种实例类型进行详细说明。
存算一体版
在存算一体版本中,实例仅包含前端(FE)和后端(BE)节点。以下将分别对两者的规格提出建议。
预估BE节点CU数量
在存算一体版本中,BE节点负责实际数据存储以及计算任务。
预估公式
CU总数 = 扫描数据总行数 / CPU处理能力 / 预期响应时间*QPS(每秒查询次数)
涉及参数说明如下:
扫描数据总行数:每个SQL预期扫描的数据总行数,需注意该数据量并非指单表的总数据量,而仅限于实际需要扫描的数据量。
CPU处理能力:该值会根据不同SQL的复杂度动态变化,通常在1000万行/秒~10000万行/秒之间。SQL复杂度越高,处理的行数则越低。
预期响应时间:预期SQL的执行时间,例如,希望SQL在1秒内完成返回。
QPS(Queries Per Second):每秒并发提交的SQL数量,例如每秒30次。
示例数据
重要公式估算不一定足够准确,因不同SQL复杂度不同,会产生差异。实际生产环境还需要结合实际业务的压力测试结果,评估最终所需资源。
扫描数据总行数
SQL复杂度
预估CPU处理能力(万行/秒)
预期响应时间(秒)
QPS(每秒查询次数)
预估所需CU总数
预估BE规格
5000万行
高
2000
2
50
63
16CU*4个
5000万行
中
5000
1.5
100
67
16CU*5个
5000万行
低
10000
1
200
100
32CU*3个
10亿行
高
2000
5
20
200
32CU*7个
10亿行
中
5000
3
50
333
64CU*6个
10亿行
低
10000
1
80
800
64CU*13个
300亿行
高
2000
30
10
500
64CU*8个
300亿行
中
5000
15
20
800
64CU*13个
300亿行
低
10000
15
20
400
64CU*6个
3000亿行
高
2000
60
5
2083
64CU*33个
3000亿行
中
5000
45
10
2222
64CU*35个
3000亿行
低
10000
45
10
1111
64CU*18个
预估BE节点存储
StarRocks实例所需的总存储空间受原始数据大小、数据副本数量以及所采用的数据压缩算法的压缩比影响。
预估公式
所需的总存储空间 = 原始数据大小 * 数据副本数/数据压缩算法压缩比
涉及参数说明如下:
原始数据大小:单行数据大小 * 总数据行数。
数据副本数:在存算一体架构下,通常设置为3个副本。
数据压缩算法压缩比:目前,StarRocks支持四种数据压缩算法,依次为zlib、Zstandard(或 zstd)、LZ4和Snappy(按压缩比从高到低排列)。这些数据压缩算法能够提供3:1至5:1的压缩比。
示例数据
单行数据大小(KB)
行级记录数
数据副本数
压缩算法压缩比
预估数据大小(GB)
50
100000000
3
3
4,768.37
说明上表仅为建议值,实际生产环境还需要结合实际业务的压力测试结果,评估最终所需资源。
BE节点磁盘规划
预估公式如下所示。
单BE节点磁盘总大小 = 总存储空间 / 磁盘利用率 / BE节点数量
涉及参数说明如下:
总存储空间:前面计算的BE节点的整体存储数量。
磁盘利用率:通常建议维持在80%,以便预留20%的空间供计算使用。
BE节点数量:基于CU的估算结果确定的BE节点数量。
例如,总存储空间为4768 GB,磁盘利用率为80%,BE节点数量为11个,则根据预估公式计算4768GB / 80% / 11个 = 541GB
,单BE节点磁盘总大小为541 GB。
磁盘数量选择
磁盘数量的选择需结合云盘ESSD的性能状况及单节点的磁盘总容量。为了实现单盘性能的最优化,建议按照下表所示的方式对ESSD PL1进行磁盘拆分。
单BE节点磁盘总大小 | 磁盘类型 | 建议磁盘个数 |
<= 500GB | ESSD PL1 | 1块 |
500GB ~ 1TB | ESSD PL1 | 1~2块 |
1TB ~ 1.5TB | ESSD PL1 | 2~3块 |
1.5TB ~ 2TB | ESSD PL1 | 3~4块 |
2TB ~ 2.5TB | ESSD PL1 | 4~5块 |
2.5TB ~ 3TB | ESSD PL1 | 5~6块 |
3TB ~ 3.5TB | ESSD PL1 | 6~7块 |
3.5TB ~ 4TB | ESSD PL1 | 7~8块 |
>4TB | ESSD PL1 | 8块 |
其他ESSD云盘的性能上限大小,分别为:
ESSD PL0:320 GB时,最大磁盘IO上限。
ESSD PL1:460 GB时,最大磁盘IO上限。
ESSD PL2:1260 GB时,最大磁盘IO上限。
ESSD PL3:7760 GB时,最大磁盘IO上限。
请参考ESSD PL1的磁盘拆分建议,相应地调整其他ESSD类型的磁盘个数,以优化性能。
预估FE节点规格
FE节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。
FE规格可按照BE的CU数量进行粗略预估,具体建议如下表所示。FE节点的数据盘通常只需100 GB,如后续存储空间不足,可再进行单独扩容。
BE总CU数量 | 场景类型 | FE建议规格 |
< 120CU | 普通场景 | 8CU * 3 |
120CU ~ 1000CU | 普通场景 | 16CU * 3 |
1000CU ~ 3000CU | 普通场景 | 32CU * 3 |
>=3000CU | 普通场景 | 64CU * 3 |
上表仅为建议值,实际生产环境还需要结合实际业务的压力测试结果,评估最终所需资源。
在高并发点查场景下,建议适当增加前端节点的数量,例如增加至5个。
存算分离版
在存算分离版本中,实例仅包含FE和CN节点。
预估CN节点CU数量
可参考存算一体版本中的预估BE节点CU数量。
预估CN节点存储
CN节点的存储主要用于缓存数据。
预估公式
所需的总存储空间 = 原始数据大小 / 数据压缩算法压缩比 * 热数据比例
涉及参数如下:
原始数据大小:单行数据大小 * 总数据行数。
数据副本数:在存算一体架构下,通常设置为3个副本。
数据压缩算法压缩比:目前,StarRocks支持四种数据压缩算法,依次为zlib、Zstandard(或 zstd)、LZ4和Snappy(按压缩比从高到低排列)。这些数据压缩算法能够提供3:1至5:1的压缩比。
热数据比例:根据业务情况,可以评估经常查询的热数据比例,例如设定为50%。如果对具体比例不确定且期望存算分离的查询性能能够尽量满足需求,则建议将其设置为100%,即一副本的量。由于主键索引也会占用一定的缓存磁盘空间,建议预留20%的缓冲区,因此整体建议设置为120%。
示例数据
单行数据大小(KB)
行级记录数
压缩算法压缩比
热数据比例
预估数据大小(GB)
50
100000000
3
120%
1,907.35
说明上表仅为建议值,实际生产环境还需要结合实际业务的压力测试结果,评估最终所需资源。
单CN节点的磁盘大小及磁盘数量,可参考存算一体版本中的BE节点磁盘规划。
预估FE节点规格
可参考存算一体版本中的预估FE节点规格。