功能支持:共享数据集群
以下每个功能都列出了添加该功能的版本号。如果您正在部署新集群,请部署 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_volume
为default_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 Catalog | Shared-Nothing |
---|---|---|---|---|
Q01 | 2742 | 858 | 9652 | 3555 |
Q02 | 2714 | 704 | 8638 | 3183 |
Q03 | 1908 | 658 | 8163 | 2980 |
Q04 | 31135 | 8582 | 34604 | 7997 |
Q05 | 26597 | 7806 | 29183 | 6794 |
Q06 | 21643 | 7147 | 24401 | 5602 |
Q07 | 35271 | 15490 | 38904 | 19530 |
Q08 | 24818 | 7368 | 27598 | 6984 |
Q09 | 21056 | 6667 | 23587 | 5687 |
Q10 | 2823 | 912 | 16663 | 3942 |
Q11 | 50027 | 18947 | 52997 | 19636 |
Q12 | 10300 | 4919 | 36146 | 8136 |
Q13 | 7378 | 3386 | 23153 | 6380 |
总和 | 238412 | 83444 | 333689 | 100406 |
结论
- 禁用数据缓存以及启用并行扫描和 I/O 合并优化的共享数据集群的查询性能是查询 Hive 数据的集群的 1.4 倍。
- 启用数据缓存以及启用并行扫描和 I/O 合并优化的共享数据集群的查询性能是共享存储集群的 1.2 倍。
其他要支持的功能
- 全文倒排索引
- 混合行-列存储
- 全局字典对象
- 备份和恢复