Doris冷热数据分层实现

1、使用Storage policy实现冷热数据分层
存储策略是使用冷热分层功能的入口,用户只需要在建表或使用Doris 过程中,给表或分区关联上Storage policy,即可以使用冷热分层的功能。
在Partition级别上设置Freeze time,表示多久这个Partition会被Freeze,并且定义Freeze之后存储的Remote storage的位置。
在BE上daemon线程会周期性的判断表是否需要freeze,若freeze后会将数据上传到兼容S3协议的对象存储和HDFS上。

冷热分层支持所有 Doris 功能,只是把部分数据放到对象存储上,以节省成本,不牺牲功能。因此有如下特点:
冷数据放到对象存储上,用户无需担心数据一致性和数据安全性问题
灵活的 Freeze 策略,冷却远程存储 Property 可以应用到表和 Partition 级别
用户查询数据,无需关注数据分布位置,若数据不在本地,会拉取对象上的数据,并 cache 到 BE 本地
副本 clone 优化,若存储数据在对象上,则副本 clone 的时候不用去拉取存储数据到本地
远程对象空间回收 recycler,若表、分区被删除,或者冷热分层过程中异常情况产生的空间浪费,则会有 recycler 线程周期性的回收,节约存储资源
cache 优化,将访问过的冷数据 cache 到 BE 本地,达到非冷热分层的查询性能
BE 线程池优化,区分数据来源是本地还是对象存储,防止读取对象延时影响查询性能

2、冷数据占用对象大小
方式一:通过 show proc '/backends’可以查看到每个 BE 上传到对象的大小,RemoteUsedCapacity 项,此方式略有延迟。
方式二:通过 show tablets from tableName 可以查看到表的每个 tablet 占用的对象大小,RemoteDataSize 项。
3、冷数据的cache
冷数据为了优化查询的性能和对象存储资源节省,引入了cache的概念。
在冷却后首次命中,Doris 会将已经冷却的数据又重新加载到 BE 的本地磁盘,cache 有以下特性:
cache 实际存储于 BE 磁盘,不占用内存空间。
cache 可以限制膨胀,通过 LRU 进行数据的清理
cache 的实现和联邦查询 Catalog 的 cache 是同一套实现
4、冷数据的 Compaction
冷数据传入的时间是数据 rowset 文件写入本地磁盘时刻起,加上冷却时间。由于数据并不是一次性写入和冷却的,因此避免在对象存储内的小文件问题,Doris 也会进行冷数据的 Compaction。但是,冷数据的 Compaction 的频次和资源占用的优先级并不是很高,也推荐本地热数据 compaction 后再执行冷却。具体可以通过以下 BE 参数调整:
BE 参数cold_data_compaction_thread_num可以设置执行冷数据的 Compaction 的并发,默认是 2。
BE 参数cold_data_compaction_interval_sec可以设置执行冷数据的 Compaction 的时间间隔,默认是 1800,单位:秒,即半个小时。。
5、冷数据的垃圾回收
冷数据的垃圾数据是指没有被任何Replica使用的数据,对象存储上可能会有如下情况产生的垃圾数据:
1、上传rowset失败但是有部分segment上传成功。
2、FE重新选CooldownReplica后,新旧CooldownReplica的rowset version不一致,FollowerReplica都去同步新CooldownReplica的CooldownMeta,
旧CooldownReplica中version不一致的rowset没有Replica使用成为垃圾数据。
3、冷数据Compaction后,合并前的rowset因为还可能被其他Replica使用不能立即删除,但是最终FollowerReplica都使用了最新的合并后的rowset,
合并前的rowset成为垃圾数据。
4、对象上的垃圾数据并不会立即清理掉。
BE参数remove_unused_remote_files_interval_sec可以设置冷数据的垃圾回收的时间间隔,默认是21600,单位:秒,即6个小时。

### Doris重新安装及旧数据迁移操作 在重新安装 Apache Doris 并将旧数据迁移到新目录的过程中,需遵循一系列严谨的操作步骤来确保数据的一致性和系统的稳定性。以下是关于此主题的具体说明: #### 1. 备份现有数据 为了防止意外丢失重要数据,在执行任何更改之前,应先备份现有的 Doris 数据文件和元数据。通常情况下,Doris数据存储路径可以通过配置文件中的 `storage_root_path` 参数找到。 ```bash cp -r /path/to/old/directory/* /backup/path/ ``` 上述命令用于复制当前的 Doris 数据到安全的位置以备不时之需[^1]。 #### 2. 卸载并重新安装 Doris 卸载原有的 Doris 安装包,并下载最新版本进行重新部署。需要注意的是,不同版本之间可能存在兼容性差异,因此建议仔细阅读官方文档确认升级策略。 对于基于 RPM 或 DEB 包管理器的 Linux 发行版来说: ```bash sudo apt-get remove doris || sudo yum remove doris wget http://example.com/latest-doris-version.tar.gz tar zxvf latest-doris-version.tar.gz cd doris-binaries && ./install.sh ``` 完成以上脚本后即可启动新的实例服务。 #### 3. 配置新存储位置 修改 Fe 和 Be 节点上的配置参数指向目标磁盘分区下的全新目录作为默认存储区域。编辑 `/etc/doris/be.conf` 文件设置如下选项: ```properties # Set the root path where BE stores tablet data. storage_root_path=/new/data/directory; ``` 保存更改之后重启对应的服务进程使调整生效。 #### 4. 迁移原有表结构与数据 利用 ETL 工具或者手动编写 SQL 命令实现从源库向目的端传输全部必要对象(包括但不限于表格定义、视图逻辑)。如果采用自动化方式,则推荐借助第三方解决方案如 Flink CDC 实现增量同步;而针对全量导入场景下可考虑导出 CSV 后再加载回系统内部。 另外值得注意的是当涉及到大规模历史记录转移时可能面临性能瓶颈问题,此时引入分层架构设计理念变得尤为重要——即按照访问频率划分冷热两类子集分别安置于高速SSD介质或是成本较低廉的传统HDD设备之上从而达到资源利用率最大化的目的[^2]。 #### 5. 测试验证环节 最后一步也是至关重要的就是进行全面的功能回归测试以及压力负载模拟演练活动,旨在发现潜在隐患及时修复规避风险事故发生几率提升整体可靠性水平。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值