腾讯云原生实时数仓建设实践

腾讯云原生实时数仓建设实践
实时数仓面临的挑战

实时数仓被广泛应用于腾讯各大业务,涉及的平台众多,从统计信息中可以看出,集群规模庞大,数据量极大。
在这里插入图片描述
复杂的使用场景和超大的数据量,导致我们在实时数仓的建设与使用过程中遇到许多挑战。

时效性

数仓使用者对时效性有非常强烈的诉求:希望查询响应更快,看板更新更及时,指标开发更快完成。因为时效性越高,数据价值也就越高。如何保障数仓的时效性是首要难题。

架构复杂度

如何在保障时效性的同时,降低架构复杂度以减少开发和维护成本,是需要重点考虑的问题。

数据准确性

保证数仓中数据和指标的准确性,不能存在异常或者错误,是对实时数仓的基础要求。

成本

在实际的生产使用中,计算与存储资源并不是免费的,如何优化实时数仓的使用成本也是值得关注的问题。
在这里插入图片描述

实时数仓的演进
实时数仓功能需求

总结来看,对于实时数仓,我们最期待的功能是以下四点:

保证全流程 T+0 级别时效性

统一并简化数仓架构

保障数据准确性

降低计算与存储成本
在这里插入图片描述

为了解决上述挑战,满足实时数仓的功能需求,我们进行了大量探索和实践,也见证了实时数仓架构的演进过程。

离线数仓
数据仓库一般采用分层架构来构建。在数仓发展的早期阶段,流处理引擎未成熟之前,离线数仓处于主流地位。
在这里插入图片描述

离线数仓采用 T+1 级别的离线 ETL 导入数据,在 ODS、DWD 和 DWS 层使用 Hive、Spark 等批处理引擎计算前一天的数据。为了提升时效性,在 ADS 层引入了 ClickHouse 提供秒级查询能力。然而总体上还是只能提供 T+1 级别的时效,无法满足我们对时效性的需求。

Lambda 架构
随着业务的发展,演化出了 Lambda 架构。Lambda 架构在原有离线数仓的基础上,增加了实时层。实时层从源头开始做实时化改造,完成数据的实时、增量计算。离线层与实时层并行运行,最终由统一的数据服务层将计算结果合并。
在这里插入图片描述

Lambda 架构充分发挥实时计算的优势,提升了数仓的时效性。同时,还可以利用离线批处理的数据重放能力保障数据的准确性,例如实时流处理遇到了故障导致输出的结果不够精确时,离线批处理系统可以把数据重跑一次,用更精确的数据来覆盖实时流结果。

但是 Lambda 架构的缺点也很明显。首先,它存在批处理和流处理两个相互独立的数据处理流程,同一套业务逻辑代码需要适配性的开发两次,开发成本高;而且需要同时维护实时和离线两套引擎,架构复杂,运维成本高。另外,Lambda 架构对存量数据更新不友好,需要重跑整个离线链路,消耗大量资源。

Kappa 架构
为了解决 Lambda 架构带来的诸多问题, Kappa 架构诞生了。

Kappa 架构将流和批融为一体,不再分为两条数据处理链路。数仓各层使用消息队列作为存储,数据经过 Flink 处理后通过消息队列传递,保障了 T+0 级别时效。
在这里插入图片描述

Kappa 架构解决了 Lambda 架构中离线层和实时层之间由于引擎不同,导致的开发运维成本高昂的问题,整体架构简洁明了。但 Kappa 架构也有其痛点。

Kappa 架构基于消息队列的数据回放能力以及流处理引擎提供的 Exactly-Cnce 语义完成历史数据的回溯,然而回溯过程中,流处理引擎的吞吐量是比不上批处理的,这可能导致一些延迟。

Kappa 架构强依赖支持回放的消息队列作为底层存储,为了保证作业崩溃或逻辑修改后可以随时回溯历史数据,消息需要有很长的保存期,大大增加了存储成本。

Kappa 架构数仓中间层没有采用可落盘的文件存储,当前无法使用 OLAP 引擎直接分析数仓中间层的数据,通常需要启动一个单独的作业来导出数据才能进行分析,灵活度欠佳。

Kappa 架构无法复用目前已经非常成熟的基于离线数仓的数据血缘、数据质量管理体系,需要重新实现自己的体系。

经过分析,我们发现 Kappa 架构的主要问题出在它的存储上,因此若想要对其优化,就需要更新其存储架构。那么是否存在一种存储技术,既能够实现分钟级到秒级的数据接入和处理,保障数仓时效性;又能实现数据的流批统一读写,简化数仓架构;还可以支持高效数据回溯和历史数据更新,保证数据准确性呢?

仔细研究后,我们发现基于 Iceberg 的数据湖能很好地满足我们的需求。

Iceberg 的引入
Iceberg 支持流式读写和批量读写,可以统一数仓架构。同时,Iceberg 可以通过小批量的数据增量读写,将数仓整体延迟减小到分钟级甚至是秒级。对于流作业崩溃等情形,可以借助 Iceberg 高效的历史数据回溯能力,从特定的快照开始重新消费数据。

Iceberg 还支持对大规模数据集进行更新删除,因此数据回溯时无需全量重新计算,降低了数据更新延迟。此外,它还支持超长的数据保存期,不必担心数据保存期过短,历史数据被清理而难以回溯等传统数据管道会遇到的难题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值