技术实现 | Apache Doris 冷热数据存储(一)

1. 前言


对于任何一种数据库类软件来说,无论其基于传统数据库模型还是基于分布式结构,作为核心的永远是数据本身。而数据的生命周期,则体现在CRUD操作(创建、查询、更新、删除)上。 任何一条数据从其生成的时刻开始,数据价值随着时间的推移而逐渐降低,直至成为无用数据,最终删除。

作为使用数据的主体——用户,对于各种数据的需求程度是不同的,人们往往对重要的数据有更高效、稳定的访问需求;而对于不重要的数据则没有这么高的要求,而前者存储的代价往往是远高于后者的。用户在满足了自身对于数据使用要求的情况下,自然会开始考虑数据存储成本等方面的问题,对于那些很少访问甚至基本不访问的数据,使用成本更低的存储方式将是一种更好的选择。

针对这样的使用场景,我们将数据根据用户需求分为“热数据”与“冷数据”。顾名思义,“热数据”代表着用户对其有着更频繁的访问需求,“冷数据”则很少访问。一般数据在新创建的时候往往都是“热数据”,而随着时间的推移逐步变成“冷数据”。

69f68313-d18d-47d9-89f7-c92542d6544b.png 2. 冷热数据与存算分离的结合


2.1. 老生常谈的存算分离

说起冷热数据存储,就不得不提到“存算分离”,两者之间有着非常多的交叉与相关性,存算分离是将存储节点与计算节点分开,以有限的计算力带动更多的存储资源,以实现更低的成本。

存算分离的概念近些年很火,然而其实早在十几年前存算分离就已经存在了, impala最早的版本就已经将数据存储在HDFS上,由impala远程加载到缓存中来进行计算,这是最典型的存算分离。然而多年来,为何存算分离还是被反复提出呢?最重要的原因,就是纯粹的存算分离有着巨大的缺陷:其牺牲了查询效率,并且在数据修改时非常麻烦,这对于一个追求查询效率的数据仓库来说是难以接受的,早期的impala推广不起来,这是很重要的一个因素。

存算分离绝对不是只实现一个读写HDFS文件的接口那么简单,需要投入更多的关注在数据管理策略上。


2.2. 基于存算分离模型的冷热数据存储

对于DORIS来说,早在第一个版本“百度PALO1.0”的时候就吸取了impala这方面的教训,数据存储不使用HDFS等远程存储,而使用的是本地磁盘,通过控制与调度本地存储,达到快速访问的目标,这也使得DORIS的基础查询速度可以达到一个令人满意的高度,也是DORIS自身的优势。正因为如此,为了最大限度地保留这一优势,同时又能获得存算分离低成本的优点,就需要引入冷热数据的概念。

对于热数据,其访问的频率很高,且往往是用户非常关心的数据,其实时性要求一般都很高,并且读写的频率也会更高,这正是DORIS本地存储重点解决的问题。

对于冷数据,其数据量往往远大于热数据,并且很少被访问,使用本地存储的代价就很高,这时使用存算分离模型,将其存储到代价更低的存储载体将大大降低成本。

b49d9b83-e4da-4466-b287-279810940525.png

3. DORIS 的冷热数据存储方案


3.1. 本地冷热数据存储(旧的冷热数据方案)


DORIS在实现冷热数据存储方面早已进行过尝试,最早的冷热数据存储使用的是本地冷热数据模型,其核心思路是:在集群中的BE节点上挂载多张硬盘,一部分是用于存储热数据的SSD盘,另一部分是存储冷数据的HDD盘。在CREATE TABLE时,用户根据自身需求,指定TABLE为热数据表,并指定其转为冷数据的时间。

如下图所示,当创建一个热数据表时,FE将会从挂载了SSD盘的BE节点(BE1,BE2,BE3)上随机选择多个来创建数据分片。当到达指定的冷却时间时,SSD盘上的数据将会复制到HDD盘,并更新其元数据信息。

e328825e-c43d-40b4-bc94-ef0169fbf919.png

本地数据存储的好处是,数据依旧是存储在本地,对数据查询效率影响较小。并且由于使用的是HDD盘,数据处理逻辑与SSD盘相同,所以在数据结构变更等操作时不需要另外再写一套处理逻辑。

坏处是,即使HDD盘的价格比SSD要低很多,但并没有质的变化,同时也存在扩容不方便、负载均衡麻烦等问题。并不能从根本上解决成本问题。


3.2. 基于存算分离的冷热数据模型

新的冷热数据方案是在整合了存算分离模型的基础上建立的,其核心思路是:DORIS本地存储作为热数据的载体,而外部集群(HDFS、S3等)作为冷数据的载体。数据在导入的过程中,先作为热数据存在,存储于BE节点的本地磁盘上。当数据需要转冷的时候,为该热数据分片创建一个冷数据的副本分片,然后将数据转储到冷数据指定的外部集群上,当冷数据副本生成完毕后,将热数据分片删除。

如下图所示,当数据变为冷数据后,BE本地将保留一个冷数据的元数据信息。当查询命中冷数据时,BE将通过这个元数据信息将冷数据缓存到本地使用。

a79750f3-1f27-4c83-b056-1161cf796ada.png

对于冷数据,其使用的频率是很低的,这样可以做到使用有限的BE节点来管理更多的数据,成本将远远低于纯本地存储的方案。


4. 总结

本文介绍了DORIS实现冷热数据的整体方案,篇幅有限,冷热数据管理还有很多没有说到的方面。比如冷数据分片有新数据写入时如何处理、冷数据遇到表结构修改时如何处理,数据本地缓存的清理策略等。这些问题将在后续文章中逐步展开,请持续关注。


- -

彭翔宇
百度 PALO 团队资深研发工程师,丰富的大数据工程研发经验,Apache Doris 冷热存储模块主要实现者,擅长 Doris 生态化组件研发


Apache Doris 开源社区链接参考


Apache Doris 官方网站:

http://doris.apache.org

Apache Doris Github

https://github.com/apache/incubator-doris

Apache Doris 开发者邮件组:

dev@doris.apache.org


本文分享自微信公众号 - ApacheDoris(gh_80d448709a68)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于 Apache Doris数据仓库平台架构设计如下: 1. 架构模式: - 采用分布式架构模式,将数据仓库划分为多个节点,每个节点可以独立存储和处理数据,同时支持横向扩展,能够处理大规模的数据量和并发请求。 2. 数据存储层: - 使用分布式文件系统(如HDFS)存储数据数据按照数据表的划分进行存储,支持数据的分片和复制,提高数据的可靠性和可用性。 - 数据以列式存储的方式存储,提高查询效率。 - 支持数据的压缩和索引,降低存储空间和提高查询效率。 3. 元数据管理: - 使用元数据管理系统(如MySQL)存储数据的元信息,包括表结构、分区、数据位置等。 - 元数据管理系统支持水平扩展,保证元数据的一致性和高可用性。 4. 查询引擎: - 使用分布式查询引擎,支持SQL语法,能够高效地执行复杂的数据查询和分析操作。 - 支持预编译和查询优化技术,提高查询性能。 5. 数据加载和导出: - 支持多种方式的数据加载和导出,如批量导入、实时流入、增量导入、导出到外部系统等。 - 支持数据的转换和清洗,提高数据的质量和一致性。 6. 安全性和权限管理: - 支持访问控制,可以对用户和角色进行权限管理,确保数据的安全性和合规性。 - 支持数据加密和身份认证,保护数据的机密性和完整性。 7. 可视化和监控: - 提供用户友好的可视化界面,方便用户管理和操作数据仓库。 - 支持实时监控和告警功能,及时发现和解决系统故障和性能问题。 总之,基于 Apache Doris数据仓库平台架构设计具备高可扩展性、高性能和高可靠性的特点,可以满足大规模数据处理和查询的需求,并提供丰富的功能和工具支持,帮助用户实现高效的数据分析和决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApacheDoris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值