实例规格规划及建议

本文档提供了创建StarRocks实例时的规格规划及建议,分别针对存算一体版与存算分离版两种实例类型进行详细说明。

存算一体版

在存算一体版本中,实例仅包含前端(FE)和后端(BE)节点。以下将分别对两者的规格提出建议。

预估BE节点CU数量

在存算一体版本中,BE节点负责实际数据存储以及计算任务。

  • 预估公式

    CU总数 = 扫描数据总行数 / CPU处理能力 / 预期响应时间*QPS(每秒查询次数)

    涉及参数说明如下:

    • 扫描数据总行数:每个SQL预期扫描的数据总行数,需注意该数据量并非指单表的总数据量,而仅限于实际需要扫描的数据量。

    • CPU处理能力:该值会根据不同SQL的复杂度动态变化,通常在1000万行/秒~10000万行/秒之间。SQL复杂度越高,处理的行数则越低。

    • 预期响应时间:预期SQL的执行时间,例如,希望SQL1秒内完成返回。

    • 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)、LZ4Snappy(按压缩比从高到低排列)。这些数据压缩算法能够提供3:15: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规格可按照BECU数量进行粗略预估,具体建议如下表所示。FE节点的数据盘通常只需100 GB,如后续存储空间不足,可再进行单独扩容。

BECU数量

场景类型

FE建议规格

< 120CU

普通场景

8CU * 3

120CU ~ 1000CU

普通场景

16CU * 3

1000CU ~ 3000CU

普通场景

32CU * 3

>=3000CU

普通场景

64CU * 3

说明
  • 上表仅为建议值,实际生产环境还需要结合实际业务的压力测试结果,评估最终所需资源。

  • 在高并发点查场景下,建议适当增加前端节点的数量,例如增加至5个。

存算分离版

在存算分离版本中,实例仅包含FECN节点。

预估CN节点CU数量

可参考存算一体版本中的预估BE节点CU数量

预估CN节点存储

CN节点的存储主要用于缓存数据。

  • 预估公式

    所需的总存储空间 = 原始数据大小 / 数据压缩算法压缩比 * 热数据比例

    涉及参数如下:

    • 原始数据大小:单行数据大小 * 总数据行数。

    • 数据副本数:在存算一体架构下,通常设置为3个副本。

    • 数据压缩算法压缩比:目前,StarRocks支持四种数据压缩算法,依次为zlib、Zstandard(或 zstd)、LZ4Snappy(按压缩比从高到低排列)。这些数据压缩算法能够提供3:15:1的压缩比。

    • 热数据比例:根据业务情况,可以评估经常查询的热数据比例,例如设定为50%。如果对具体比例不确定且期望存算分离的查询性能能够尽量满足需求,则建议将其设置为100%,即一副本的量。由于主键索引也会占用一定的缓存磁盘空间,建议预留20%的缓冲区,因此整体建议设置为120%。

  • 示例数据

    单行数据大小(KB)

    行级记录数

    压缩算法压缩比

    热数据比例

    预估数据大小(GB)

    50

    100000000

    3

    120%

    1,907.35

    说明

    上表仅为建议值,实际生产环境还需要结合实际业务的压力测试结果,评估最终所需资源。

CN节点的磁盘大小及磁盘数量,可参考存算一体版本中的BE节点磁盘规划

预估FE节点规格

可参考存算一体版本中的预估FE节点规格