StarRocks 存算分离数据回收原理

前言

StarRocks存算分离表中,垃圾回收是为了删除那些无用的历史版本数据,从而节约存储空间。考虑到对象存储按照存储容量收费,因此,节约存储空间对于降本增效尤为必要。

在系统运行过程中,有以下几种情况可能会需要删除对象存储上的数据:

  1. 用户手动执行了删除库、表、分区等命令,如执行了 drop table、drop database 以及 drop partition 等命令
  2. 随着系统内 Compaction 任务不断进行,合并之前的数据文件可以被安全回收

目前在 StarRocks 的存算分离表存储在对象存储上的文件类型包含如下几种:

  1. Segment 文件:导入过程中会产生数据文件,存算分离的数据文件格式与存算一体保持一致
  2. Txn Log 文件:StarRocks 存算分离实现中,每次导入或者 Compaction 都会产生一次事务,每个 Tablet 在数据写入的最后阶段都会产生一个 Txn Log 文件,记录本次导入新增的数据文件列表
  3. Tablet Meta 文件:StarRocks 每次导入或者 Compaction 都会产生全局唯一的版本。而 Tablet Meta 文件在事务提交阶段产生,存储 Tablet 特定版本的元数据信息,其中主要记录了该版本所有可见的数据文件名

本文旨在描述 StarRocks 存算分离表垃圾回收的原理,会针对上述两种数据清理场景分别描述其内部原理,帮助开发和运维人员能更好地理解并根据实际需要做出合适的配置,以在性能和成本方面取得平衡。


数据多版本技术

在介绍数据清理之前,我们有必要先介绍下目前 StarRocks 存算分离的数据多版本技术,以便更好地理解垃圾数据回收原理。

StarRocks 存算分离版本中,数据在对象存储上的组织结构如下图所示:

d746aa5340bf59d3ba37d19544369c08.jpeg

上图中共产生了三次数据导入事务,其中:

  • Load Txn 1: 在事务数据写入阶段,生成了新数据文件 file 1 & file 2,该事务提交后生成了 Tablet Meta V1,其中记录该版本可见的文件列表为 {file-1, file-2}
  • Load Txn 2: 在事务数据写入阶段,生成了新数据文件 file 3 & file 4。在提交时,根据前一个版本(即 Tablet Meta V1)然后加上本次导入事务生成的新数据文件(file-3 & file-4),生成了新的 Tablet Meta V2,因此,该版本可见的文件列表为 {file-1, file-2, file-3, file-4}
  • Load Txn 3: 在事务写入阶段,产生了新数据文件 file 5。该事务提交时,根据前一个版本(即 Tablet Meta V2)然后加上本次导入事务生成的新数据文件(file-5),产生了新的 Tablet Meta V3,因此,该版本的可见文件列表为 {file-1, file-2, file-3, file-4, file-5}


除了用户导入事务产生了新的数据版本,在存算分离架构中,系统后台 Compaction 任务也会产生新数据版本。Compaction 的目的有二: 1). 将多个版本的小文件合并为大文件,减少查询时的随机 IO 次数,2). 消除重复数据记录,减少数据总量。

在存算分离表中,每次 Compaction 同样会产生一个全新的版本。依然以上面为例,假如在上面 Txn 3 之后新的事务 Txn 4 为一次 Compaction 任务&#x

### StarRocks 存储计算分离架构安装部署指南 #### 一、环境准备 为了成功部署StarRocks存算分离架构,需先准备好Kubernetes(K8s)集群环境。确保该环境已配置好网络插件并能正常访问互联网以拉取所需镜像。 #### 二、安装StarRocks Operator 通过应用StarRocks官方提供的Operator至目标K8s集群来简化部署流程。此操作可通过kubectl命令行工具完成,具体如下所示: ```bash $ kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/crds.yaml $ kubectl apply -f https://raw.githubusercontent.com/StarRocks/starrocks-kubernetes-operator/main/deploy/operator.yaml ``` 上述命令会向K8s集群中添加自定义资源定义(CRD),随后启动负责管理StarRocks实例生命周期的控制器[^2]。 #### 三、创建持久化卷(PV) 由于采用对象存储作为后端数据仓库,在某些场景下可能仍需为FE组件设置本地持久化卷用于保存元数据等重要信息。依据实际需求编写PV/PVC声明文件,并提交给K8s集群处理。 #### 四、定制化CRD资源配置 编辑适合业务特点的ClusterResourceDefinition (CRD) 文件,指定版本号(如3.1.3)及相关参数选项,特别是针对FE和CN节点的数量与规格做出合理规划[^1]。 #### 五、执行部署动作 最后一步就是将精心设计好的CRD文档应用于K8s平台之上,触发自动化安装过程。整个过程中可以借助于之前提到过的监控手段密切跟踪进度直至全部服务健康上线为止。 ```yaml apiVersion: starrocks.apache.org/v1alpha1 kind: StarRocksCluster metadata: name: example-starrocks-cluster spec: imageTag: "v3.1.3" feGroupSpec: replicas: 3 cnGroupSpec: replicas: 5 ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值