实时数仓与离线数仓总结(一)

精选30+云产品,助力企业轻松上云!>>> hot3.png


天主要聊聊数仓的基础知识,分为两篇文章介绍,这是第一篇。


主要内容:


数仓基本概念

数仓架构演变

实时数仓和离线数仓的区别



数仓基本概念


首先说一下数据仓库的概念,以下简称数仓。


数仓是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。


主题是公司从宏观出发,为了分析数据,分了用户主题、商品主题、设备主题等有助于决策的数据模型。


随着互联网的发展,数据源头越来越多且是分散的,除了业务库,APP埋点,web网站log,LOT 设备等会产生各种各样的海量数据,这些数据在进入数据仓库之前(或之后),需要进行统一(字段定义、主题归属、项目划分等),数据集成在一起。


数仓中的数据是不可修改的,主要用于数据查询,是相对稳定的。


数仓的数据一般都带有时间特征,数据是随着时间的变化而变化的。数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,反应历史变化


数仓从模型层面分为三层:

  • ODS,操作数据层,保存原始数据;

  • DWD,数据仓库明细层,根据主题定义好事实与维度表,保存最细粒度的事实数据;

  • DM,数据集市/轻度汇总层,在DWD层的基础之上根据不同的业务需求做轻度汇总;


很多面试的时候,面试官会问数仓和数据库的区别,其实只要从下面这几个方面回答就可以。根本的还是问 OLAP 和 OLTP 的区别


208454a9aec6234b919914026c83f4b1abc.jpg


数仓的发展


数仓有两个环节:一个是数仓的建设、另一个数仓的应用。


早期的数仓建设主要是把企业的业务数据库(ERP、CRM、SCM等数据按照决策分析的要求建模并汇总到数据仓库引擎中,其应用以报表为主,目的是支持管理层和业务人员决策(中长期策略型决策)。


328c20c7309999526a990880f6a98bcc612.png

传统数仓


目前,随着企业信息化的发展,数据源变得越来越丰富,在原来业务数据库的基础上出现了非结构化数据,比如网站log,IoT设备数据,APP埋点数据等,这些数据量比以往结构化的数据大了几个量级,对ETL过程、存储都提出了更高的要求;互联网的在线特性也对实时性提出了要求,比如用户反欺诈、用户审核等随着用户的暴涨,只靠人工干预是远远不够的。


总结一句话就是:实时数仓是个趋势,大量异构的数据存储和处理也是新的挑战。


a54075611e173a4dd9c9bddc87663f5e3bc.jpg



数仓的架构演变



数据仓库概念是Inmon于1990年提出并给出了完整的建设方法。随着互联网时代来临,数据量暴增,开始使用大数据工具来替代经典数仓中的传统工具。此时仅仅是工具的取代,架构上并没有根本的区别,可以把这个架构叫做离线大数据架构

后来随着业务实时性要求的不断提高,人们开始在离线大数据架构基础上加了一个加速层,使用流处理技术直接完成那些实时性要求较高的指标计算,这便是Lambda架构

再后来,实时的业务越来越多,事件化的数据源也越来越多,实时处理从次要部分变成了主要部分,架构也做了相应调整,出现了以实时事件处理为核心的Kappa架构

5bb99e37a3bec40bc72fa36b0cf5f8b3520.png


下面是 Lambda 架构和Kappa架构的区别,以便大家可以深入了解这两种架构的优缺点。


e39b714220ed971836a6d54f99adc938925.jpg


在真实的企业生产中,很多时候并不是完全规范的Lambda架构或Kappa架构,可以是两者的混合,比如大部分实时指标使用Kappa架构完成计算,少量关键指标(比如金额相关)使用Lambda架构用批处理重新计算,增加一次校对过程。Kappa 架构并不是中间结果完全不落地,现在很多大数据系统都需要支持机器学习(离线训练),所以实时中间结果需要落地对应的存储引擎供机器学习使用,另外有时候还需要对明细数据查询,这种场景也需要把实时明细层写出到对应的引擎中。


离线数仓和实时数仓


接下来我会分别介绍离线数仓和实时数仓的架构:


cda2bffe83449e11d07c15f715502a5a860.jpg

离线数仓


离线数仓,一般地,(业务、日志)数据存储在 HDFS 上,一般分这几层:ods/dwd/dws/dm,其中 dm 层的数据会导出到 olap、rds、kv数据库中供业务方使用。ad-hoc查询的数据来源一般来自 ods层或dw层,ad-hoc的查询引擎为 hive/spark/presto。


30c571f96ef1930ff6ec03b090449a2c97a.jpg

实时数仓


实时数仓,也是基于分层的模型 ods/dwd/dws/,业务数据和日志数据,事实数据存储在 kafka 中,维度数据存储在 Hbase/Tair 中,dm层的数据最终导出到 mq/olap/rds/kv中。ad-hoc  查询基于 Flink 来做。(都是流动的数据),如上图所示,就是 Kappa 架构


主要:实时数仓的存储需考虑支持数据重放,方便支持任务重跑。选择一个具有重放功能的、能够保存历史数据并支持多消费者的消息队列,根据需求设置历史数据保存的时长,比如Kafka,可以保存全部历史数据。


说到任务重跑,在实时数仓里面是这样做的:


1.当某个或某些指标有重新处理的需求时,按照新逻辑写一个新作业,然后从上游消息队列的最开始重新消费,把结果写到一个新的下游表中。

2.当新作业赶上进度后,应用切换数据源,读取2中产生的新结果表。

3.停止老的作业,删除老的结果表。

a8a0aa8beecca157ab72ccd61ee9781bd79.png




参考



https://yq.aliyun.com/articles/691541


(完)

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

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上百节课视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 本课程采用由浅入深,层层递进的讲解方式, 让你轻松掌握企业级数仓架构的搭建及使用, 使用该架构可以胜任企业级实时数仓离线数仓构建。 课程内容: 1. 项目背景介绍 2. 数据建模应用 3. 基于Kylin的OLAP分析 4. 需求分析与项目设计 5. 订单与销售额指标计算 6.行为指标计算 7.Druid的安装和使用 8.流式数仓实现 适用人群: 1、对企业级数据仓库构建感兴趣,有一定大数据基础。 2、对目前职业有进一步提升要求,希望从事数据行业高薪工作的在职人员。 3、对数据行业感兴趣的相关人员。 基础课程主讲内容包括: 阶段一:千亿级实时数仓项目总体介绍 1. 数据仓库在企业里面的重要性 2. 千亿级实时数仓的项目演示 阶段二: 数据建模的应用 1. 为什么要数据建模 2. 维度和指标的概念 3. 指标和维度建模案例 阶段三. 数据仓库从0到1的过程 1. 数仓典型分层思想(ODS、DWB、DWS、DM、ADS) 2. 数仓建设0到1的过程实战 3. 企业级数据仓库设计的规范 阶段四:基于Kylin的OLAP分析 1. Kylin自带的example案例介绍 2. Kylin的Cube创建 3. Kylin的数据膨胀介绍 阶段五:需求分析与项目设计 1. 需求分析 2. canal搭建 3. canal数据写入kafka 阶段六:订单与销售额指标计算 1. 销售额指标体系介绍 2. flink实时消费Kafka订单数主题数据 3. 订单金额指标统计 阶段七:行为指标计算 1. 模拟通过埋点方式采集行为数据 2. 使用Flink Streaming计算用户行为相关指标 3. Flink CEP实现转化率分析 阶段八: Druid的安装和使用 1. Druid实时数据摄入 2. Druid基于JSON查询语法 3. Imply Pivot可视化数据分析

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值