跳到主要内容
版本: 最新版本-3.5

规划 StarRocks 集群

本主题从节点数量、CPU 核心数量、内存大小和存储大小等方面描述了如何在生产环境中规划 StarRocks 集群的资源。

节点数量

StarRocks 主要由两种类型的组件组成:FE 节点和 BE 节点。每个节点必须单独部署在物理或虚拟机上。

FE 节点数量

FE 节点主要负责元数据管理、客户端连接管理、查询规划和查询调度。

在生产环境中,我们建议您在 StarRocks 集群中至少部署 三个 Follower FE 节点,以防止单点故障(SPOF)。 Leader FE 将从这三个 Follower 中自动选举产生。

StarRocks 使用 Raft 协议来管理 FE 节点之间的元数据。 StarRocks 从所有 Follower FE 节点中选举一个 Leader FE 节点。 只有 Leader FE 节点可以写入元数据。 其他 Follower FE 节点仅根据 Leader FE 节点的日志更新其元数据。 每次 Leader FE 节点发生故障时,只要超过一半的 Follower FE 节点处于活动状态,StarRocks 就会重新选举一个新的 Leader FE 节点。

如果您的应用程序生成高并发查询请求,您可以向集群添加 Observer FE 节点。 Observer FE 节点仅处理查询请求,不参与 Leader FE 节点的选举。

BE 节点数量

BE 节点负责数据存储和 SQL 执行。

在生产环境中,我们建议您在 StarRocks 集群中至少部署 三个 BE 节点,以确保高数据可靠性和服务可用性。 当至少部署三个 BE 节点并添加到 StarRocks 集群时,会自动形成一个 BE 的高可用性集群。 一个 BE 节点发生故障不会影响 BE 服务的整体可用性。

您可以增加 BE 节点的数量,使您的 StarRocks 集群能够处理高并发查询。

CN 节点数量

CN 节点是 StarRocks 的可选组件,仅负责 SQL 执行。

您可以增加 CN 节点的数量,以弹性扩展计算资源,而无需更改 StarRocks 集群中的数据分布。

CPU 和内存

通常,FE 服务不会消耗大量的 CPU 和内存资源。 我们建议为每个 FE 节点分配 8 个 CPU 核心和 16 GB RAM。

与 FE 服务不同,如果您的应用程序在大型数据集上处理高并发或复杂查询,BE 服务可能会大量消耗 CPU 和内存。 因此,我们建议为每个 BE 节点分配 16 个 CPU 核心和 64 GB RAM。

存储容量

FE 存储

由于 FE 节点仅在其存储中维护 StarRocks 的元数据,因此在大多数情况下,每个 FE 节点 100 GB 的 HDD 存储就足够了。

BE 存储

估算 BE 的初始存储空间

您的 StarRocks 集群需要的总存储空间同时受到原始数据大小、数据副本计数以及您使用的数据压缩算法的压缩率的影响。

使用以下公式,您可以估算所有 BE 节点所需的总存储空间

Total BE storage space = Raw data size * Replica count/Compression ratio

Raw data size = Sum of the space taken up by all fields in a row * Row count

在 StarRocks 中,表中的数据首先被划分为多个分区,然后被划分为多个 Tablet。 Tablet 是 StarRocks 中数据管理的基本逻辑单元。 为了确保高数据可靠性,您可以维护每个 Tablet 的多个副本并将它们存储在不同的 BE 上。 默认情况下,StarRocks 维护三个副本。

目前,StarRocks 支持四种数据压缩算法,它们按压缩率从高到低排列:zlib、Zstandard(或 zstd)、LZ4 和 Snappy。 它们可以提供 3:1 到 5:1 的压缩率。

确定总存储空间后,您可以简单地将其除以集群中 BE 节点的数量,以估算每个 BE 节点的平均存储空间。

随时添加额外的存储空间

如果您的原始数据增长导致 BE 存储空间耗尽,您可以通过垂直或水平扩展集群或仅扩展云存储来补充它。

  • 向 StarRocks 集群添加新的 BE 节点

    您可以向 StarRocks 集群添加新的 BE 节点,以便可以将数据均匀地重新分布到更多节点。 有关详细说明,请参阅扩展 StarRocks 集群 - 横向扩展 BE

    添加新的 BE 节点后,StarRocks 会自动重新平衡所有 BE 节点之间的数据。 所有表类型都支持这种自动平衡。

  • 向 BE 节点添加额外的存储卷

    您还可以向现有 BE 节点添加额外的存储卷。 有关详细说明,请参阅扩展 StarRocks 集群 - 纵向扩展 BE

    添加额外的存储卷后,StarRocks 会自动重新平衡所有表中的数据。

  • 添加云存储

    如果您的 StarRocks 集群部署在云上,您可以按需扩展您的云存储。 有关详细说明,请联系您的云提供商。