大数据生态系统】什么是离线数仓,什么又是实时数仓?

2020-06-24 09:07发布

5条回答
那些年很冒险的梦。
2楼 · 2020-06-24 10:02

首先,从架构上,实时数仓与离线数仓有比较明显的区别,实时数仓以Kappa架构为主,而离线数仓以传统大数据架构为主。Lambda架构可以认为是两者的中间态。

其次,从建设方法上,实时数仓和离线数仓基本还是沿用传统的数仓主题建模理论,产出事实宽表。另外实时数仓中实时流数据的join有隐藏时间语义,在建设中需注意。

最后,从数据保障看,实时数仓因为要保证实时性,所以对数据量的变化较为敏感。在大促等场景下需要提前做好压测和主备保障工作,这是与离线数据的一个较为明显的区别。


汽水味的小盆友
3楼 · 2021-09-01 11:34

离线数仓

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

实时数仓

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

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

爱梦 - 拿来吧你
4楼 · 2021-08-30 09:32

数仓概念

数据仓库(Data Warehouse)是为企业所有部门决策制定过程,提供所有系统数据支持的数据集合。与数据仓库相类似的集合叫数据集市(Data Mart),它是满足特定部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。

数据仓库并不是数据的最终目的地,而是为数据最终目的地做好准备。准备包括对数据的:清洗、转义、分类、重组、合并、拆分、统计等。


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

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

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

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


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


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


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


与离线数仓相比,实时数仓的数据源存储不同。

与离线数仓相比,实时数仓的层次更少一些。


20200921文 - 做更棒的自己!
5楼 · 2021-11-25 19:23

大数据开发一般要具备编程能力,就我从业3年多经验来看,有编程能力会获得更好的发展。
大数据开发一般有数仓开发、数据分析、数据开发三大类,每类要求的技能是不一样的。但是都有很多共通的技能。
通用的技能:除了具备基础的Sql能力以外,包括会用传统的Mysql、Oracle这种传统数据库,而且要会用Hive、Hbase这些基于分布式的数据库;当然Java编程能力是不可少的,其他方面的诸如Mapreduce和Spark也会就更好了。会用集群,集群除了问题有一定解决集群问题的能力。
数仓开发:要会数仓建模,维表、事实表、主题表、星型模型、雪花模型等等,要对业务非常熟悉,有全局观,才能建好数据仓库。
数据开发:数据开发有离线开发和实时开发,这种更偏向后端开发,类似java有需求就开发,加上平时对程序维护。
数据分析:这个要求sql功底强,如果能用python对数据分析那会更好了。要会用sqoop和kettle等这些常用的ETL工具,会用报表系统。
当然,如果你想学习,可以深入学习更多的东西。毕竟在平时开发的过程中,尤其是小公司分工不明确的情况下,这些技能或多或少都需要我们掌握的。就是一个人可以当几个人用,类似全栈工程师。

小光光321
6楼 · 2022-04-20 11:43

数据仓库是对企业各类数据的汇总和规范化,能够屏蔽各业务系统之间的差异,提供统一的数据出口。通常情况下,数据仓库都要包括贴源层、明细层、汇总层和集市层或者贴源层、模型层、集市层等几个层次,并最终通过接口等方式提供数据给下游应用文系统使用。

其中,贴源层是对源系统数据的直接复制,不做加工处理,往往通过卸数或者数据同步的方式实现,其他层次是基于贴源层数据跑批和逐步汇总抽象得来。

目前,大多还是离线数据仓库,往往是T+1延迟,即T+1日凌晨卸载源系统T日日终的数据,然后跑批,将数据入模型入集市,并最终提供给下游应用系统,可以基于大数据平台,也可以基于Teradata等传统数据仓库来做。


相关问题推荐

没有解决我的问题,去提问