当前位置:网站首页>数智学习 | 流批一体实时数仓建设路径探索
数智学习 | 流批一体实时数仓建设路径探索
2022-06-28 00:29:00 【数澜科技Dtwave】
栏目语
数澜科技开设全新栏目「技术派+」,聚焦前沿技术,洞悉行业风向,分享来自一线的研发经验与应用实践。
本期专栏由数澜科技研发专家六木带来,探索流批一体实时数仓建设路径。
导语
在数据仓库建设过程的开始阶段,企业的业务场景基本都是基于批处理的模式,利用成熟的离线技术来构建离线数仓,中间可能也会夹杂些实时处理的场景,但大多会转化为准实时的处理模式,如分钟级调度。
随着时代发展,企业业务数据呈几何式飞速增长,传统离线数仓不足逐渐毕露,准实时处理方式已经不足以满足业务诉求,企业开始着手构建实时数仓。
在实时数仓建设过程中,用同一套代码实现大数据的流计算和批计算,进而保证处理过程与结果的一致性的“流批一体”技术理念被业界广泛认可,并在多个业务场景中成功验证,逐渐走向落地。
一、流批一体技术理念发展
回顾来看,实时数仓技术架构发展主要经历了三个阶段:Lambda架构、Kappa架构、搭载数据湖的Kappa架构。
在Lambda架构中,批处理和流处理是分开的,通过周期调度来进行离线数据采集和加工,中间数据也能保存下来,同时实时流处理可以快速提供加工好的数据。批处理保障数据的准确性,流处理保障数据的及时性,架构稳定性也比较好。
但另一方面,Lambda架构的弊端也很明显,拥有批、流两种不同的计算引擎,针对同一业务场景需要维护两套代码,容易产生不同的数据结果;两种计算引擎,数据开发成本、运维成本也都比较高。
为了解决上述问题,业界提出流批一体的技术理念,即计算引擎同时拥有流计算的低延迟、批计算的高吞吐高稳定性,并且用同一套编程接口实现批计算和流计算并保证底层执行逻辑一致,进而保证处理过程和结果的一致性。
流批一体主要体现在以下四个方面:
统一元数据:离线和实时的元数据统一存储。
统一数据存储:即统一存储离线计算和实时计算的数据,避免数据的不一致性、重复存储和重复计算等问题。
统一计算引擎:即离线计算和实时计算采用统一的计算引擎,并用同一套逻辑或代码去覆盖两种场景。
统一语义:即语义开发层的统一,从使用者的角度来思考设计,使数据开发过程便捷、低门槛、高效率。简单理解可以分为三类:统一开发如使用统一的SQL或SDK、基于业务模型或逻辑模型进行开发如使用低代码或无代码进行开发、统一特征开发过程如在流计算或批计算中做到AI工程化。
二、基于流批一体的实时数仓架构
在流批一体技术理念提出后,Kappa架构走入主流视野。Kappa架构将流批整合,通过消息队列来进行数据缓存,结果数据存储到KV数据库(Hbase/ES)或OLAP数据库中,供业务方实时访问分析。数据研发只需编写一套处理逻辑,保证了数据的一致性,同时相对降低了资源消耗和维护成本。
但该架构也存在缺陷,无法对消息队列中的数据进行即席分析,并且对消息队列本身的性能、存储要求非常高,全链路依赖消息队列,容易造成数据时序性导致的数据结果不正确,此外,消息队列回溯能力也不及离线存储。
随着数据湖和Flink等相关大数据技术的快速发展,基于Flink+数据湖的Kappa架构成为了建设流批一体的实时数仓主流架构。
通过Flink CDC技术将全量和增量的原始数据写入到ODS层中,使用数据湖进行统一存储,后续只需通过Flink计算引擎、编写一套代码对数据湖中的数据进行分层分域的数据计算,即可完成整个数据处理链路,保证了数据的一致性,减少了运维成本;同时,部分数据湖技术如Iceberg还可以直接对接Presto/Trino计算引擎,可以快速支持实时数据即席分析的场景。
三、数栖平台——流批一体实时计算平台
数澜科技旗下数据中台构建套件数栖平台,提供一站式流批一体计算平台,通过集群管理、元数据管理、数据开发、运维发布、可视化监控告警等核心功能模块,帮助企业快速搭建实时数仓平台。
目前,数栖平台采用Flink+Iceberg的技术方案,表的元数据统一存储在HiveMeta中,数据文件统一存储在HDFS上,并通过全托管的方式让用户不用关心底层存储计算集群的架构原理,只需要聚焦于自身的业务逻辑。
数栖平台核心功能:
- 插件化设计,适配多种厂商不同的大数据计算集群。
- 支持丰富的节点库,可以快速扩展支持新数据源。
- 提供向导方式创建实时ETL作业,全量数据和增量数据同步无缝衔接,并在数据写入端提供支持多种主键冲突方式。
- 内置多种DDL模板,减轻开发工作量、避免手动输错表结构,聚焦于任务开发进程。
- 支持在线SQL开发内置SQL格式化、语义检查、代码高亮等,屏蔽底层原生代码框架,降低开发门槛。
- 集成Flink Web UI,在线实时监控任务运行状况及迅捷精准定位异常。
- 支持可视化拖拽开发配置作业,作业流程及依赖关系清晰明了。
基于数栖平台搭建实时数仓,首先把各种数据源的数据通过实时同步任务采集到Iceberg中,然后在实时开发平台上创建Flink SQL或Flink作业来计算处理数据,计算结果可写入Hbase/ES/Mysql等,最后通过创建数据服务API来供业务方应用调用使用。
边栏推荐
- Jenkins - 邮件通知 Email Notification 插件
- Locust 性能测试 - 参数化,并发循环数据采样不重复
- Shardingsphere-proxy-5.0.0 establish MySQL read / write separation connection (6)
- Fundamentals of scala (3): operators and process control
- Ten MySQL locks, one article will give you full analysis
- 4G-learn from great partners
- Jenkins - 访问 Jenkins 自定义参数变量,处理变量值中含有空格
- Jenkins - groovy postbuild plug-in enriches build history information
- Numpy----np. Tile() function parsing
- Jenkins - email notification plug-in
猜你喜欢
Jenkins - Pipeline 概念及创建方式
Numpy----np. meshgrid()
Cvpr22 collected papers | hierarchical residual multi granularity classification network based on label relation tree
Appium automation test foundation ADB common commands (I)
Using redis bitmap to realize personnel online monitoring
New choice for database Amazon Aurora
文件傳輸協議--FTP
利用redis bitmap实现人员在线情况监控
Wangxinling, tanweiwei Shanhai (extended version of Chorus) online audition lossless FLAC Download
Jenkins - Pipeline syntax
随机推荐
Cesium 多边形增加文字标签(polygon 加 label)多边形中心点偏移问题解决
Using redis bitmap to realize personnel online monitoring
KVM related
Intranet penetration with FRP
【永艺XY椅】试用体验
Four classic training modes in comparative learning
Prometeus 2.35.0 new features
Cesium 点击绘制多边形(动态绘制多边形)
[elt.zip] openharmony paper Club - memory compression for data intensive applications
Description du format geojson (détails du format)
Dynamic Host Configuration Protocol
To understand what is synchronous, asynchronous, serial, parallel, concurrent, process, thread, and coroutine
Jenkins - Pipeline syntax
Cvpr22 collected papers | hierarchical residual multi granularity classification network based on label relation tree
Numpy----np.reshape()
pytorch_ lightning. utilities. exceptions. MisconfigurationException: You requested GPUs: [1] But...
766. toplitz matrix
mysql面试百题集
stm32f1中断介绍
1382. balancing binary search tree - General method