【实时数仓架构】方法论(未完)

笔者不是专业的实时数仓架构,这是笔者从其他人经验和网上资料整理而来,仅供参考。写此文章意义,加深对实时数仓理解。

实时数仓背景和场景

一、实时数仓架构技术演进

1.1、四种架构演进

1)离线大数据架构
一种批处理离线数据分析架构,通过采用Hadoop技术栈,采用任务调度工具+小时/分钟级别调度任务方式,达到小时/分钟级别的实时数据分析。
2)Lambda架构
一种以批处理为主的离线数据分析架构,它将数据处理分为实时和离线两部分,其中离线部分通过批量计算来处理数据,实时部分则通过增量追加方式将数据合并到批处理结果中。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9a4409f9524d4c3996d7b25532a0b7f5.png

优势:满足实时处理低延迟需要,数据修正计算资源消耗少。
劣势:同样的需求需要开发两套一样的代码。后期维护困难,数据一致性得不到保证。

3)Kappa架构
一种以流处理为主的实时数据分析框架,它将实时数据直接存储在Kafka等消息队列中,并通过流处理器将数据转换为目标数据模型。
在这里插入图片描述

优势:架构简单,避免了维护两套系统还需要保持结果一致的问题,也很好解决了数据订正问题。
劣势:在 Kappa 架构中,需求修改或历史数据重新处理都通过上游重放完成。Kappa 架构最大的问题是流式重新处理历史的吞吐能力会低于批处理。消息中间件缓存的数据量和回溯数据有性能瓶颈。

4)数据湖架构
一种存算分离为主的统一存储(数据湖格式满足ACID)、多样化计算引擎的数据分析架构,它将实时数据的明细、中间、结果写入同一存储,供多样化计算引擎实时查询和访问。
在这里插入图片描述

优势:hudi、 iceberg 本身提供了ACID属性,这些特性可以解决数据回溯成本高,OLAP引擎结合困难的问题。
劣势:采用Copy-on-Wite (COW)会造成写放大,影响写入的性能;采用Merge-on-Read(MOR)会造成读放大,影响实时数据的查询分析性能:而湖格式存储,通常采用COW或者MOR,不可两者兼得,会造成性能不足以满足实施业务需求,通常存在分钟级别或者是小时级别的延迟。

1.2、架构能力对比

技术组件和实效性对比

离线大数据Lambda架构Kappa架构数据湖架构
典型技术组合离线:Hadoop+Spark;
调度工具:Azkaban;
OLAP引擎:Impala/presto;
数据服务:HBase
离线:Hadoop+Hive/Spark 流处理;
Flink OLAP引擎:ClickHouse;
数据服务:HBase
流处理:Flink;
OLAP引擎:Doris;
数据服务:HBase
湖格式:Hudi/iceberg/Delta on HDFS;
流处理:Flink;
OLAP引擎:Impala/Pretsto;
数据服务:HBase
数据源结构化/半结构化结构化/半结构化结构化/半结构化结构化/半结构化、非结构化
实时处理技术栈典型代表:Spark Streaming、Flink典型代表:Flink典型代表:Flink
实时性小时/分秒/毫秒秒/毫秒小时/分

实时数据分析对比

离线大数据Lambda架构Kappa架构数据湖架构
实时数据存储HDFS,且OLAP&HBase基于HDFS离线数据:HDFS;
实时数据:CK+HDFS(HBase底层存储)
OLAP引擎:DorisHDFS
实时数据更新能力HDFS: OverwriteHDFS: Overwrite;
CK:更新能力不完善;
HBase: Upsert
Doris: UpsertHudi/Iceberg/Delta : Upsert
实时查询DWD、DWS中间层结果支持查询中间结果一般不写入OLAP引擎;
写入HDFS,则支持查询
中间结果存储Kafka,不支持查询支持查询
实时性小时/分秒/毫秒秒/毫秒小时/分
OLAP引擎Impala/presto查询性能弱,适合联邦查询CK适合单表聚合,多表Join能力差Doris单表和多表Join查询能力较好湖格式有相关索引能力,查询性能优Impala/Presto on HDFS
数据服务使用HBase,支持高并发,离线实时数据都可查使用HBase,支持高并发,只能查实时数据使用HBase,支持高并发,只能查实时数据使用HBase,支持高并发,离线实时数据都可查
实时AI分析基于Spark ML/TF/PyTorch离线训练和推理基于Flink ML/TF/PyTorch实时训练和推理基于Flink MLTF/PyTorch实时训练和推理基于Flink MLTF/PyTorch实时训练和推理

管理对比

离线大数据Lambda架构Kappa架构数据湖架构
运维成本维护一套代码,难度较小维护两套代码,难度较小维护一套代码,难度较小维护一套代码,难度较小
数据孤岛离线实时数据在同一个存储介质离线实时数据在不同存储介质离线实时数据在同一个存储介质离线实时数据在同一个存储介质
数据一致性离线、实时数据和指标不一致概率小离线、实时数据和指标不一致概率大离线、实时数据和指标不一致概率小,少量修正离线、实时数据和指标不一致概率小,少量修正

1.3、实时数仓

1.3.1 实时数仓定义

遵循数据仓库的建设规范,一种支持事件发生后立即或不久对事件数据进行处理和分析的解决方案,数据实时采集、写入、加工、分析、应用都是连续,提供数据产生到应用的端到端秒级响应能力,以最小的延迟产出数据见解驱动业务行动。

1.3.2 实时数仓特点

1、毫米级延迟
低延迟主要体现三方面:
1)整体链路:端到端毫秒延迟;
2)数仓层级:层级毫秒级延迟;
3)数仓数据:实时写入/更新/可见/可查,数据毫米级延迟。
2、高吞吐写和高QPS度
3、智能化
实时数仓能够做到智能自适应,根据业务数据波峰波谷,自动调用计算资源;统计数据访问频次,自动完成冷热数据切换,兼顾性能、成本、自运维。
4、高可用架构
实时数仓应该具备高可用,通过架构部署或者产品能力实现从集群、负载格力、服务主备等手段,避免单一故障,有应急系统可切换使用,服务不断。
5、高水平数据管理
实时数仓需要建立完善的数据资产管理,包括但不限于源数据管理、数据安全、数据脱敏、数据备份、数据血缘、数据目录等,实现数据可查、能用、可用、好用。
6、支持混合负载
实时数仓期望能多种类型的混合负载一体化支持,不同负载能够做到相互隔离不干扰,即一个引擎支持多种场景,简化架构、保证数据一致性。

1.4、实时数仓典型业务场景

通常来讲,企业构建实时数仓,有以下几大类业务场景和技术需求。

1.4.1六类场景

1)实时描述类:
场景描述:通过数据实时反馈业务正在发生什么,协助管理层第一时间做出业务决策。
教育行业场景-数据看板:采集企业的B段业务数据,包含交易、教学、人员等数据,按照不同的条件和学习层级等,形成营收、教学等实时报表。
核心技术需求:实时预计算分析、离线实时数据关联分析
2)实时运营类
场景描述:通过数据实时诊断业务为什么发生,找到差异性和根因,协助执行层实时决策和实时调控相关策略。
电商行业场景-精准营销:产出实时用户标签数据,然后做人群圈选、用户画像分析、对不同的人群、不同的活动策略做AB测试,实时评估活动效果和差异性,实时调整人群包和营销活动。
核心技术需求:OLAP分析、多维分析、即时分析、标签护具高效分析。
3)实时监控类
场景描述:通过数据实时识别业务正在发生的风险,及时预警供相关人实时干预。
行业场景-链路监控:直播行业的网络异常监控,及时处理较少投诉率。物流行业实时整合多源数据,结合出入库、仓库作业等实时数据协助小二日常物流订单分析、订单派送。
核心技术需求:高QPS的在线数据服务、实时规则引擎、实时复杂时间处理
4)实时预测类
场景描述:通过数据实时预测业务未来可能发生的风险或者行为,提前干预降低风险成本,促进业务规模化增长。
行业场景-实时推荐:在搜索、推荐、广告行业,实时采集用户行为数据,计算实时特征,预测用户点击率/转化率,然后做个性化推荐,提升业务效果。
核心技术需求:实时特征/样本计算、实时AI、高QPS的在线数据服务、向量召回。
5)实时自动决策类
场景描述:通过对市场的实时事件的数据分析,快速响应市场变化,自动完成相关交易和价格调整。
金融行业场景-金融量化投资:基于提前建立的交易模型实现交易执行的自动化,通过对市场数据的实时监控和分析,快速响应市场变化,减少人为干扰和误操作,提高交易效率和准确率。
核心技术需求:实时特征/样本计算、实时AI、高QPS的在线数据服务
6)实时用户增长类
场景描述:通过对用户实时行为数据,在用户拉新、促活、流失、召回环节实时决策,实现日活、月活用户量的增长。
游戏行业场景-游戏发现:基于用户实时行为数据,通过广告只能投放优化买量,提升用户拉新ROI。通过实时个性化推荐,促活。其他等。
核心技术需求:实时特征/标签计算、OLAP分析、高QPS在线数据服务、向量召回、高效的留存/漏斗分析函数。

1.4.2 实时看板/大屏

此类需求在技术上,常需要业务交易数据,设计高层管理人群关注的核心指标,基于实时数据计算毫秒级计算指标值,存储是OLAP引擎中,最终在展示工具设计出数据看板和大屏访问。

1.4.3 实时OLAP分析

此类需求在技术上,需要查询业务总体情况,发现差异,然后基于数据立方体能力,从多维度、多指标对比分析,找到差异原因,反向指导业务的运作。

1.4.4 实时风险监测

该场景下,首先实时采集设备、交易数据、结合交易数据,其次通过实时规则+AI算饭的智能识别,将风险、故障灯行为数据和用户,汇总推到相关人群做后续执行动作,完成风险识别、推送、执行的闭环链路。

1.4.5 实时推荐

实时推荐场景下,首先采集用户行为数据进消息队列,其次基于实时数据计算完成实时特征计算,结合静态(离线)特征一起存储,即用户标签和画像,此时实时推荐的推理服务即可利用实时+离线特征进行物品推荐。更进一步,会结合实时特征+明细行为数据,基于Base离线模型,周期训一个实时模型,然后跟已经上线模型做对比,效果优则上线,此时完成实时推荐AI模型的更新。


二、需求分析

2.1、功能性需求

这些需求通常是可以明确的,可以被度量。主要包含以下几个方面:
1、实时数据采集
1)离线数据同步
2)实时数据同步:基于消息中间件的数据实时入仓;基于CDC数据实时入仓。
2、实时数据计算
3、实时数据存储
4、实时数据分析服务
5、实时数据接口
6、数据资产管理

2.2、非功能性需求

1、可用性
1)服务可用性;2)容灾备份
2、安全性
1)系统安全;2)数据安全;3)网络安全;
3、高性能
1)数据延迟性能;2)数据实时采集性能;3)数据实时计算性能;4)实时数据存储性能;5)分析服务性能
4、成本可控

未完。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/581848.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

State.initState() must be a void method without an `async` keyword错误解析

文章目录 报错问题报错的代码 错误原因解决方法解析 另外的方法 报错问题 State.initState() must be a void method without an async keyword如下图: 报错的代码 报错的代码如下: overridevoid initState() async{super.initState();await getConf…

springboot权限验证学习-上

创建maven项目 创建父工程 这类项目和原来项目的区别在于&#xff0c;打包方式是pom 由于pom项目一般都是用来做父项目的&#xff0c;所以该项目的src文件夹可以删除掉。 创建子工程 子工程pom.xml 父工程pom.xml 添加依赖 父工程导入依赖包 <!--导入springboot 父工程…

李沐70_bert微调——自学笔记

微调BERT 1.BERT滴哦每一个词元返回抽取了上下文信息的特征向量 2.不同的任务使用不同的特性 句子分类 将cls对应的向量输入到全连接层分类 命名实体识别 1.识别应该词元是不是命名实体&#xff0c;例如人名、机构、位置 2.将非特殊词元放进全连接层分类 问题回答 1.给…

fetch请求后端返回文件流,并下载。

前端&#xff1a; <script src"~/layui/layui.js"></script> <script src"~/Content/js/common/js/vue.min.js"></script> <script src"~/Content/js/common/js/jquery-1.10.2.min.js"></script><styl…

[论文笔记]GAUSSIAN ERROR LINEAR UNITS (GELUS)

引言 今天来看一下GELU的原始论文。 作者提出了GELU(Gaussian Error Linear Unit,高斯误差线性单元)非线性激活函数&#xff1a; GELU x Φ ( x ) \text{GELU} x\Phi(x) GELUxΦ(x)&#xff0c;其中 Φ ( x ) \Phi(x) Φ(x)​是标准高斯累积分布函数。与ReLU激活函数通过输入…

pycharm配置wsl开发环境(conda)

背景 在研究qanything项目的过程中&#xff0c;为了进行二次开发&#xff0c;需要在本地搭建开发环境。然后根据文档说明发现该项目并不能直接运行在windows开发环境&#xff0c;但可以运行在wsl环境中。于是我需要先创建wsl环境并配置pycharm。 wsl环境创建 WSL是“Windows Su…

【多模态大模型】AI对视频内容解析问答

文章目录 1. 项目背景2. 直接对视频进行解析进行AI问答&#xff1a;MiniGPT4-Video2.1 MiniGPT4-Video效果 3. 对视频抽帧为图片再进行AI问答3.1 视频抽帧3.2 图片AI问答3.2.1 阿里通义千问大模型 Qwen-vl-plus3.2.2 Moonshot 1. 项目背景 最近在做一个项目,需要使用AI技术对视…

DDP示例

https://zhuanlan.zhihu.com/p/602305591 https://zhuanlan.zhihu.com/p/178402798 关于模型保存与加载 &#xff1a; 其实分为保存 有module和无module2种 &#xff1b; &#xff08;上面知乎这篇文章说带时带module) 关于2种带与不带的说明&#xff1a; https://blog.csdn.…

69、栈-有效的括号

思路&#xff1a; 有效的括号序列是指每个开括号都有一个对应的闭括号&#xff0c;并且括号的配对顺序正确。 比如&#xff1a;({)} 这个就是错误的&#xff0c;({}) 这个就是正确的。所以每一个做括号&#xff0c;必有一个对应的右括号&#xff0c;并且需要顺序正确。这里有…

Meilisearch 快速入门(Windows 环境) 搜索引擎 语义搜索

Meilisearch 快速入门(Windows 环境)# 简介# Meilisearch 是一个基于 rust 开发的,快速的、完全开源的轻量级搜索引擎。它的数据存储基于磁盘与内存映射,不受 RAM 限制。在一定数量级下,搜索速度不逊于 Elasticsearch。 下载# 官方服务端包下载地址:github.com/meili…

常用图像加密技术-流密码异或加密

异或加密是最常用的一种加密方式&#xff0c;广泛的适用于图像处理领域。这种加密方式依据加密密钥生成伪随机序列与图像的像素值进行异或操作&#xff0c;使得原像素值发生变化&#xff0c;进而使得图像内容发生变化&#xff0c;达到保护图像内容的目的。 该加密方法是以图像…

鸿蒙OpenHarmony【小型系统 烧录】(基于Hi3516开发板)

烧录 针对Hi3516DV300开发板&#xff0c;除了DevEco Device Tool&#xff08;操作方法请参考烧录)&#xff09;外&#xff0c;还可以使用HiTool进行烧录。 前提条件 开发板相关源码已编译完成&#xff0c;已形成烧录文件。客户端&#xff08;操作平台&#xff0c;例如Window…

深度学习模型的优化和调优de了解

深度学习模型的优化和调优&#xff1a;随着深度学习应用的广泛&#xff0c;优化和调优神经网络模型成为了一个重要的问题。这包括选择合适的网络架构、调整超参数、应对过拟合等。 深度学习模型的优化和调优是指在训练神经网络模型时&#xff0c;通过一系列技术和方法来提高模型…

FTP 文件传输协议

FTP 文件传输协议 作用 用来传输文件的 FTP协议采用的是TCP作为传输协议&#xff0c; 21号端口用来传输FTP控制命令的&#xff0c; 20号端口用来传输文件数据的 FTP传输模式&#xff1a; 主动模式&#xff1a; FTP服务端接收下载控制命令后&#xff0c;会主动从tcp/20号端口…

C语言之详细讲解文件操作

什么是文件 与普通文件载体不同&#xff0c;文件是以硬盘为载体存储在计算机上的信息集合&#xff0c;文件可以是文本文档、图片、程序等等。文件通常具有点三个字母的文件扩展名&#xff0c;用于指示文件类型&#xff08;例如&#xff0c;图片文件常常以KPEG格式保存并且文件…

修改word文件的创作者方法有哪些?如何修改文档的作者 这两个方法你一定要知道

在数字化时代&#xff0c;文件创作者的信息往往嵌入在文件的元数据中&#xff0c;这些元数据包括创作者的姓名、创建日期以及其他相关信息。然而&#xff0c;有时候我们可能需要修改这些创作者信息&#xff0c;出于隐私保护、版权调整或者其他实际需求。那么&#xff0c;有没有…

短信验证码绕过漏洞(一)

短信验证码绕过漏洞 0x01原理&#xff1a; 服务器端返回的相关参数作为最终登录凭证&#xff0c;导致可绕过登录限制。 危害&#xff1a;在相关业务中危害也不同&#xff0c;如找回密码&#xff0c;注册&#xff0c;电话换绑等地方即可形成高危漏洞&#xff0c;如果是一些普…

常用算法代码模板 (3) :搜索与图论

AcWing算法基础课笔记与常用算法模板 (3) ——搜索与图论 常用算法代码模板 (1) &#xff1a;基础算法 常用算法代码模板 (2) &#xff1a;数据结构 常用算法代码模板 (3) &#xff1a;搜索与图论 常用算法代码模板 (4) &#xff1a;数学知识 文章目录 0 搜索技巧1 树与图的存…

【Scala---01】Scala『 Scala简介 | 函数式编程简介 | Scala VS Java | 安装与部署』

文章目录 1. Scala简介2. 函数式编程简介3. Scala VS Java4. 安装与部署 1. Scala简介 Scala是由于Spark的流行而兴起的。Scala是高级语言&#xff0c;Scala底层使用的是Java&#xff0c;可以看做是对Java的进一步封装&#xff0c;更加简洁&#xff0c;代码量是Java的一半。 因…

MATLAB语音信号分析与合成——MATLAB语音信号分析学习资料汇总(图书、代码和视频)

教科书&#xff1a;MATLAB语音信号分析与合成&#xff08;第2版&#xff09; 链接&#xff08;含配套源代码&#xff09;&#xff1a;https://pan.baidu.com/s/1pXMPD_9TRpJmubPGaRKANw?pwd32rf 提取码&#xff1a;32rf 基础入门视频&#xff1a; 视频链接&#xff1a; 清…
最新文章