彻底打通实时数据仓库该如何实现及多种技术架构解析

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
日志服务 SLS,月写入数据量 50GB 1个月
云解析 DNS,旗舰版 1个月
简介: 彻底打通实时数据仓库该如何实现及多种技术架构解析

越来越多的实时数据需求,需要更多的实时数据来做业务决策,例如需要依据销售情况做一个资源位的调整;同时有些活动也需要实时数据来增强与用户的互动。如果数据有实时和离线两种方案,优先考虑实时的,如果实时实现不了再考虑离线的方式。

实时数据仓库,已经被很多公司所接受,而且接触很多About云社区会员,都在筹备搭建实时数据仓库。


1.那么实时数据仓库有哪些特点:



  • 数据实时到达:以更快的速度到达仓库–每秒数百万个事件的流数据不断到达
  • 即席查询:数据可最佳查询所需的时间更快-到达后立即进行查询,无需进行处理、聚合或压缩
  • 查询速度更快:查询运行的速度更快–小型选择性查询以10或100毫秒为单位进行衡量;大型、扫描或计算繁重的查询以很高的带宽处理
  • 数据更改效率高:必要时,数据变化的很快-如果由于某种原因需要校正或更新数据,则无需大量重写即可就地完成

2.公司构建实时数据仓库有哪些好处?


实时数据仓库使用者,如运营,管理层,或者老板,可以实时看到检测数据,那么实时看到检测数据,这样方便多了:

以外卖场景为例:

(1)做了营销活动,那么当前活动效果如何,如果不好,是否可以及时的补救。

(2)上线了新业务,那么新业务大家是否喜欢,根据用户的实时检测和反馈,对于新业务也可以随时调整

(3)对于订单、商家、配送如出现异常,亦可实时发现和处理

(4)对于下单的用户,亦可以根据用户喜好,实时推荐。


通过以上,面对企业想法的验证、业务异常的检测、用户的爱好推荐,我们都可以实时处理,而不是问题出现或则业务异常,导致第二天才能处理或则认识到。实时数据仓库可以让企业更高效运行。如果说离线数据仓库支持公司运营战略决策,那么实时则支持公司战略和战术决策。


3.如何构建实时数据仓库:


其实如果我们对数据仓库不了解,或者只做过离线数据仓库,可能有这么一个问题?

离线和实时他们是各自独立的,还是有关联的。从效率的角度来说,企业都不会让它们独立分开。对于实时的数据,最后还是会流入数据仓库。


如果这里不明白,我们需要进一步的说明,对于实时数据仓库来说,大多数使用的技术架构为Flink流式处理,Kafka做为存储。我们知道kafka一般是用作缓存的,数据一般都是有有效期的。所以实时数据仓库在某个阶段,数据可以设计流向离线数据仓库。


这里面如果我们真正想构建实时数据仓库,可能还有以下问题?


1.kafka作为数据仓库,它需要分层吗?该如何分层

Kafka分层是以topic来分的,表对应topic,例如形式如下:


ded5e8f6590c8c05307b78427f301b43.png


也就是通过上面形式,我们就已经实现了kafka作为实时数据仓库。


2.如何操作Topic

我们知道Topic里面其实都是消息,如果我们想让里面的消息整合,该如何操作。这时候我们就用到了Flink Sql,Flink Sql读取Topic,然后进行各种数据操作,比如Join等。


上面我们打通了实时数据仓库存储问题,以及数据该如何操作的问题,那么具体该如何根据我们的业务来构建数据仓库?

其实我们只要理解了实时数据仓库,那么实现的方式和思路也是多种多样的,一般来说实时数仓整体框架依据数据的流向分为不同的层次,接入层会依据各种数据接入工具收集各个业务系统的数据,如埋点的业务数据或者业务后台的并购放到【kakfa】消息队列里面。消息队列的数据既是离线数仓的原始数据,也是实时计算的原始数据,这样可以保证实时和离线的原始数据是统一的。


有了源数据,在计算层经过Flink+实时计算引擎做一些加工处理,然后落地到存储层中不同存储介质当中。不同的存储介质是依据不同的应用场景来选择。框架中还有Flink和Kafka的交互,在数据上进行一个分层设计,计算引擎从Kafka中捞取数据做一些加工然后放回Kafka,这里放回的数据则可能其它分层数据。


在存储层加工好的数据会通过服务层(DWS或者DM)的两个服务:统一查询、指标管理,统一查询是通过业务方调取数据接口的一个服务,指标管理是对数据指标的定义和管理工作。通过服务层应用到不同的数据应用,数据应用可能是我们的正式产品或者直接的业务系统。


如对上面分层、数据仓库不了解,可参考下面内容

数据仓库详解:包括概念、架构及设计

https://www.aboutyun.com/forum.php?mod=viewthread&tid=21425

大数据项目之电商数仓(用户行为数据采集)(一)等系列文章。

https://www.aboutyun.com/forum.php?mod=viewthread&tid=29839

4.技术架构解析:


上面如果对数据仓库不是很了解,可能看的会比较模糊,我们继续更进一步阐述,实时数据仓库和离线数据仓库区别其实是在时间上,实时数据仓库仓库无论是采集,还是计算,都比较及时。那么具体该如何实现?比如在采集方面:可以使用一些实时采集框架canal、maxwell、EPX,为了更好的对比,那么如果离线采集,可能的插件比如Sqoop,Sqoop底层使用的是MapReduce.在计算框架方面,离线可以使用Hive,实时目前大多使用Flink。


我们在实际构建数据仓库的时候,可能面临下面问题

1.流程不清晰

2.技术选型不清晰


下面我们看几个技术架构,帮助我们选择更合适我们从纯技术角度来解析架构。


实时架构1解析:


ec11c530258c76083eece63000c7491a.png


我们看到User Log、Server Log通过日志采集工具进入kafka,kafka数据分别进入,Hive和Kafka。

我们看到Hive和Kafka都进行了分层,也就是说,Hive是离线数据库,Kafka则是实时数据仓库。


HIve分层:这里需要说明的是分层其实本质每层都有对应的表。


STG:存放的是从异构的源系统集成过来数据。

ODS:最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。

DW:Data warehouse,数据仓库层。在这里,从ODS层中获得的数据按照主题建立各种数据模型。

RPT:是面向报表层的,包括报表查询用到的汇总表(某些查询维度较少时可以用)、明细表。

DIM:公共维度汇总层(DIM)基于维度建模理念,建立整个企业的一致性维度。


我们看到DW层和DIM层定时更新到Hbase/Redis中。


Kafka实时数据仓库:

我们看到ODS,DWD,DWS它们分别为:

DWD:数据仓库明细层(Data Warehouse Detail, DWD)

DWS:数据仓库汇总层(Data Warehouse Summery,)是数据平台的主体内容。这两个层的数据是ODS层数据经过ETL清洗、转换、加载生成的。当然大多数是把表加宽,利于分析和统计。


我们看到DWD、DWS进入ClickHouse/Doris,这里也就是我们所说的OLAP。


实时架构2解析:


fc9e8cb2bf594ba8da7265fc98881338.png


此为oppo的实时数据仓库。数据仓库采用NiFi 搜集日志,然后进入Kafka,这里原始表,应该就是ODS层,然后通过Flink ETL清洗加工等,又流入Kafka作为DWD层,这里可以即席查询,也即OLAP。Kafka明细层汇总即数据仓库的DM(ADS)层,DM层作为报表分析,用户画像、接口服务等数据源。

关于NiFi 可参考

https://www.aboutyun.com/blog-61-4370.html

实时架构3解析:

63941fae57ac943614cecddacff5e34a.png

我们看此技术架构,与oppo图差异很大,但是内容基本差不多,只不过DM层替换为Hbase.这里值得注意的地方,有DIM维度层,可以与其它层数据Join。


实时架构4解析:


f3cb5c0d5a1724f2e84c374336b9b906.png


此架构离线和实时数据仓库分离,实时数据仓库使用Flink,离线数据仓库使用的是Hive/Spark。

整个流程中,在采集日志中:

实时数据仓库使用Flume和Canal

离线数据仓库使用Flume和Sqoop


存储:

实时数据仓库存储使用Kakfa

离线数据仓库存储使用Hive


分层:

实时数据仓库:ODS和DIM Join,形成宽表然后进入Kafka,形成DWD层,然后DWD进一步处理进入DWS层。

离线数据仓库:存储先进入HDFS,然后进入Hive,这里流程和实时数据仓库一样,打宽表然后形成分层等。


实时架构5解析:


61a456674aa90f1290f754c516d4951b.png


这是离线和实时一体数据仓库,我们不少成员在创建实时数据仓库的时候,可能有这么一个疑问,如果数据存在Kafka,那这些数据如果过期了,该如何处理?

其实这些数据每个公司根据自己的情况,如上Kafka DWD层数据,流入离线数据仓库Hive,然后进一步处理。


上面整个流程,我们看到采集日志使用的是Flume和CDC,采集后进入实时数据仓库Kafka,然后ODS层和DIM层打宽表为DWD,DWD处理的数据分别进入离线数据仓库Hive以及Kafka的DWS层,这两条线下面相信就不用在细说了。最后DWS层为OLAP提供数据。


5.总结


从上面我们看出,无论是实时数据仓库还是离线数据仓库,数据库分层都是差不多的,关于分几层,需要根据我们的实际情况,一般来说是四到五层,京东是九层。分层的作用很多,我们认为其中每层复用和节省时间提高效率,分层起着很大的作用。


关于技术架构,其实如果上面我们都读懂了,技术架构已经不是问题。该选哪个,不该选哪个,需要考虑我们的场景、团队的知识储备等。


目录
相关文章
|
16天前
|
机器学习/深度学习 缓存 自然语言处理
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
Tiktokenizer 是一款现代分词工具,旨在高效、智能地将文本转换为机器可处理的离散单元(token)。它不仅超越了传统的空格分割和正则表达式匹配方法,还结合了上下文感知能力,适应复杂语言结构。Tiktokenizer 的核心特性包括自适应 token 分割、高效编码能力和出色的可扩展性,使其适用于从聊天机器人到大规模文本分析等多种应用场景。通过模块化设计,Tiktokenizer 确保了代码的可重用性和维护性,并在分词精度、处理效率和灵活性方面表现出色。此外,它支持多语言处理、表情符号识别和领域特定文本处理,能够应对各种复杂的文本输入需求。
53 6
深入解析Tiktokenizer:大语言模型中核心分词技术的原理与架构
|
7天前
|
存储 机器学习/深度学习 应用服务中间件
阿里云服务器架构解析:从X86到高性能计算、异构计算等不同架构性能、适用场景及选择参考
当我们准备选购阿里云服务器时,阿里云提供了X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等多种架构,每种架构都有其独特的特点和适用场景。本文将详细解析这些架构的区别,探讨它们的主要特点和适用场景,并为用户提供选择云服务器架构的全面指南。
|
1天前
|
算法 前端开发 定位技术
地铁站内导航系统解决方案:技术架构与核心功能设计解析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文档可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~
21 1
|
1月前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
2月前
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
91 18
|
1月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
|
7天前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
48 29
|
4天前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
23 3
|
6天前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
16天前
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。

热门文章

最新文章

推荐镜像

更多