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

功能支持:共享数据集群

提示

以下每个功能都列出了添加该功能的版本号。如果您正在部署新集群,请部署 3.2 或更高版本的最新补丁版本。

概述

共享数据 StarRocks 集群具有存储和计算分离的架构。这允许数据存储在远程存储中,与共享存储集群相比,从而降低了存储成本,优化了资源隔离,并提高了服务弹性。

本文档概述了共享数据集群的功能支持,涵盖部署方法、存储配置、缓存机制、Compaction、主键表功能和性能测试结果。

部署

共享数据集群支持通过 Operator 在物理/虚拟机和 Kubernetes 上进行部署。

两种部署解决方案都有以下限制

  • 不支持共享存储和共享数据模式的混合部署。
  • 不支持从共享存储集群转换为共享数据集群,反之亦然。
  • 不支持异构部署,这意味着集群内所有 CN 节点的硬件规格必须相同。

StarRocks Kubernetes Operator

StarRocks 提供了 StarRocks Kubernetes Operator,用于在 Kubernetes 上进行共享数据部署。

您可以通过以下方法扩展共享数据集群

  • 手动操作。
  • 使用 Kubernetes HPA(Horizontal Pod Autoscaler)策略自动伸缩。

存储

共享数据集群支持在 HDFS 和对象存储上构建存储卷。

HDFS

位置

StarRocks 支持 HDFS 存储卷的以下位置

  • HDFS:hdfs://<host>:<port>/

    注意

    从 v3.2 开始,存储卷支持启用 NameNode HA 模式的 HDFS 集群。

  • WebHDFS(从 v3.2 开始支持):webhdfs://<host>:<http_port>/

  • ViewFS(从 v3.2 开始支持):viewfs://<ViewFS_cluster>/

身份验证

StarRocks 支持 HDFS 存储卷的以下身份验证方法

  • 基本

  • 用户名(从 v3.2 开始支持)

  • Kerberos 票证缓存(从 v3.2 开始支持)

    注意

    StarRocks 不支持自动刷新票证。您需要设置 crontab 任务来刷新票证。

尚不支持使用 Kerberos Keytab 和 Principal ID 进行身份验证。

使用说明

StarRocks 支持 HDFS 和对象存储上的存储卷。但是,每个 StarRocks 实例中只允许一个 HDFS 存储卷。创建多个 HDFS 存储卷可能会导致 StarRocks 的未知行为。

对象存储

位置

StarRocks 支持以下对象存储服务作为存储卷

  • 与 S3 兼容的对象存储服务:s3://<s3_path>
    • AWS S3
    • GCS、OSS、OBS、COS、TOS、KS3、MinIO 和 Ceph S3
  • Azure Blob Storage(从 v3.1.1 开始支持):azblob://<azblob_path>
  • Azure Data Lake Storage Gen2(从 v3.4.1 开始支持):adls2://<file_system_name>/<dir_name>

身份验证

StarRocks 支持针对不同对象存储服务的以下身份验证方法

  • AWS S3
    • AWS SDK
    • 基于 IAM 用户的凭据
    • 实例配置文件
    • 承担角色
  • GCS、OSS、OBS、COS、TOS、KS3、MinIO 和 Ceph S3
    • 访问密钥对
  • Azure Blob Storage
    • 共享密钥
    • 共享访问签名(SAS)
  • Azure Data Lake Storage Gen2
    • 共享密钥
    • 共享访问签名(SAS)

分区前缀

从 v3.2.4 开始,StarRocks 支持为与 S3 兼容的对象存储系统创建具有分区前缀功能的存储卷。启用此功能后,StarRocks 将数据分配到存储桶下的多个分区(子路径)中。它可以轻松地提高 StarRocks 在存储桶中存储的数据文件上的读取和写入性能。

存储卷

  • 从 v3.1.0 开始,可以使用 CREATE STORAGE VOLUME 语句创建存储卷,建议在以后的版本中使用此方法。
  • 共享数据集群中的内部目录 default_catalog 使用默认存储卷进行数据持久化。您可以通过设置属性 storage_volumedefault_catalog 中的数据库和表分配不同的存储卷。如果未配置,则属性 storage_volume 按目录、数据库和表的顺序继承。
  • 目前,存储卷只能用于存储云原生表中的数据。未来的支持将包括外部存储管理、数据加载和备份功能。

缓存

缓存类型

文件缓存

文件缓存是与共享数据集群一起引入的初始缓存机制。它在段文件级别加载缓存。在 v3.1.7、v3.2.3 和更高版本中不建议使用文件缓存。

数据缓存

从 v3.1.7 和 v3.2.3 开始支持数据缓存,以替换早期版本中的文件缓存。数据缓存按需从远程存储加载块(按 MB 级)中的数据,而无需加载整个文件。建议在更高版本中使用,并在 v3.2.3 及更高版本中默认启用。

数据缓存预热

StarRocks v3.3.0 引入了数据缓存预热功能,以加速数据湖和共享数据集群中的查询。数据缓存预热是填充缓存的积极过程。通过执行 CACHE SELECT,您可以主动提前从远程存储中获取所需的数据。

配置

  • 表属性
    • datacache.enable:是否启用本地磁盘缓存。默认值:true
    • datacache.partition_duration:缓存数据的有效期限。
  • BE 配置
    • starlet_use_star_cache:是否启用数据缓存。
    • starlet_star_cache_disk_size_percent:数据缓存在共享数据集群中最多可以使用的磁盘容量百分比。

功能

  • 数据加载生成本地缓存,其驱逐仅由缓存容量控制机制管理,而不是由 partition_duration 管理。
  • StarRocks 支持为数据缓存预热设置定期任务。

局限性

  • StarRocks 不支持缓存数据的多个副本。

Compaction

可观察性

分区级别 Compaction 状态

从 v3.1.9 开始,您可以通过查询 information_schema.partitions_meta 查看分区的 Compaction 状态。

我们建议监控以下关键指标

  • AvgCS:分区中所有 Tablet 的平均 Compaction 分数。
  • MaxCS:分区中所有 Tablet 的最大 Compaction 分数。

Compaction 任务状态

从 v3.2.0 开始,您可以通过查询 information_schema.be_cloud_native_compactions 查看 Compaction 任务的状态和进度。

我们建议监控以下关键指标

  • PROGRESS:Tablet 的当前 Compaction 进度(百分比)。
  • STATUS:Compaction 任务的状态。如果发生任何错误,将在该字段中返回详细的错误消息。

取消 Compaction 任务

您可以使用 CANCEL COMPACTION 语句取消特定的 Compaction 任务。

示例

CANCEL COMPACTION WHERE TXN_ID = 123;

注意

CANCEL COMPACTION 语句必须在 Leader FE 节点上执行。

手动 Compaction

从 v3.1 开始,StarRocks 提供了一个用于手动 Compaction 的 SQL 语句。您可以指定要压缩的表或分区。有关更多信息,请参阅 手动 Compaction

主键表

下表列出了主键表的主要功能及其在共享数据集群中的支持状态

特性支持版本描述
主键表v3.1.0
主键索引持久化v3.2.0
v3.1.3
  • 目前,共享数据集群支持在本地磁盘上持久化主键索引。
  • 远程存储中的持久化将在未来的版本中支持。
部分更新v3.1.0共享数据集群从 v3.1.0 开始支持行模式下的部分更新,从 v3.3.1 开始支持列模式下的部分更新。
条件更新v3.1.0目前,该条件仅支持“大于”。
混合行-列存储将在未来的版本中支持。

查询性能

以下测试比较了禁用数据缓存的共享数据集群、启用数据缓存的共享数据集群、查询 Hive 中数据集的集群以及共享存储集群的查询性能。

硬件规格

测试中使用的集群包括一个 FE 节点和五个 CN/BE 节点。硬件规格如下

VM 提供商阿里云 ECS
FE 节点8 核 32 GB 内存
CN/BE 节点8 核 64 GB 内存
网络带宽8 Gbits/s
磁盘ESSD

软件版本

StarRocks v3.3.0

数据集

SSB 1TB 数据集

注意

此比较中使用的数据集和查询来自 Star Schema Benchmark

测试结果

下表显示了 13 个查询和每个集群总和的性能测试结果。查询延迟的单位是毫秒(ms)。

查询禁用数据缓存的共享数据启用数据缓存的共享数据禁用数据缓存的 Hive CatalogShared-Nothing
Q01274285896523555
Q02271470486383183
Q03190865881632980
Q04311358582346047997
Q05265977806291836794
Q06216437147244015602
Q0735271154903890419530
Q08248187368275986984
Q09210566667235875687
Q102823912166633942
Q1150027189475299719636
Q12103004919361468136
Q1373783386231536380
总和23841283444333689100406

结论

  • 禁用数据缓存以及启用并行扫描和 I/O 合并优化的共享数据集群的查询性能是查询 Hive 数据的集群的 1.4 倍
  • 启用数据缓存以及启用并行扫描和 I/O 合并优化的共享数据集群的查询性能是共享存储集群的 1.2 倍

其他要支持的功能

  • 全文倒排索引
  • 混合行-列存储
  • 全局字典对象
  • 备份和恢复