首页 > 其他分享 >大数据-数据仓库-实时数仓架构分析

大数据-数据仓库-实时数仓架构分析

时间:2022-12-07 13:35:42浏览次数:33  
标签:数仓 full 架构 分区 数据仓库 实时 Kafka 维度 数据

image
image

数仓分层

分层 全称 译名 说明 压缩 列式存储 分区
ODS Operation Data Store 原始层 原始数据
DIM Dimension 维度层 合并维度表
DWD Data Warehouse Detail 明细层 数据处理、维度建模
DWS Data Warehouse Service 服务层 去主键聚合,得到原子指标
DWT Data Warehouse Topic 主题层 存放主题对象的累积行为
ADS Application Data Store 应用层 具体业务指标
  • ODS:原始数据,日志和业务数据 放到 Kafka
  • DWD:根据数据对象为单位进行分流,比如订单、页面访问等等
  • DIM:维度数据
  • DWM:对于部分数据对象进行进一步加工,比如独立访问、跳出行为,也可以和维度进行关联,形成宽表,依旧是明细数据。
  • DWS:根据某个主题将多个事实数据轻度聚合,形成主题宽表。
  • ADS:把ClickHouse中的数据根据可视化需进行筛选聚合

命名规范

库名:业务大类
表名:分层名_业务细类
临时表:temp_表名
备份表:bak_表名
视图:view_表名(场景:不共享的维度表、即席查询)

分层 命名规范 说明
ODS ods+源类型+源表名+full/i full:全量同步
i:增量同步
ods_postgresql_sku_full
ods_mysql_order_detail_i
ods_frontend_log
DIM dim+维度+full/zip full:全量表
zip:拉链表
日期维度表没有后缀
dim_sku_full
dim_user_zip
dim_date
DWD dwd+事实+full/i full:全量事实
i:增量事实
DWS dws+原子指标 时间粒度有1d、1h…
1d:按1天
1h:按1小时
dws_page_visitor_1d
DWT dwt_消费者画像
ADS ads+衍生指标/派生指标

离线数仓:事实表,维度表,都放Hive
实时数仓:原始数据放 Kafka,维度数据 放 HBase,Phoenix

  • 离线计算:就是在计算开始前已知所有输入数据,输入数据不会产生变化,一般计算量级较大,计算时间也较长。例如今天早上一点,把昨天累积的日志,计算出所需结果。最经典的就是 Hadoop 的 MapReduce 方式;
    一般是根据前一日的数据生成报表,虽然统计指标、报表繁多,但是对时效性不敏感。从技术操作的角度,这部分属于批处理的操作。即根据确定范围的数据一次性计算。

  • 实时计算:输入数据是可以以序列化的方式一个个输入并进行处理的,也就是说在开始的时候并不需要知道所有的输入数据。与离线计算相比,运行时间短,计算量级相对较小。强调计算过程的时间要短,即所查当下给出结果。
    主要侧重于对当日数据的实时监控,通常业务逻辑相对离线需求简单一下,统计指标也少一些,但是更注重数据的时效性,以及用户的交互性。从技术操作的角度,这部分属于流处理的操作。根据数据源源不断地到达进行实时的运算。

  • 即席查询: 需求的临时性,小李,把两星期的数据拉给我看下(只在这个时刻需要)
    Presto: 当场计算(基于内存速度快)
    Kylin:预计算(提前算好),多维分析(Hive With Cube)

Sqoop 导入数据方式:

  • 增量: where 1=1、

  • 全量: where 创建时间=当天、

  • 新增及变化:where 创建时间=当天 or 操作时间=当天、

  • 特殊(只导入一次)
    Flume:

  • tailDirSource
    优点:断点续传,监控多目录多文件
    缺点:当文件更名之后,重新读取该文件造成数据重复
    注意:1. 要使用不更名的打印日志框架(logback)--一般logback 也会设置成更名的,每天一个日志文件,文件名带上日期,如果写死文件名,更名后可能会丢数据
    2.修改源码,让TailDirSource判断文件时,只看 iNode 值

  • KafkaChannel
    优点:将数据导入Kafka,省了一层Sink
    Kafka:生产者、消费者
    用法:1. Source-KafkaChannel-Sink
    2. Source-KafkaChannel
    3. KafkaChannel-Sink

逻辑线: 数据流、监控、优化、配置。

Kafka

  • Producer:ACK、拦截器、序列化器、分区器、发送流程、事务、幂等性,分区规则-->有指定分区发到指定分区,没有根据Key进行hash,都没有进行轮询(粘性)
  • Broker: Topic 副本-> 高可用 ISR LEO、HW ;分区:高并发、负载均衡(防止热点)
  • Consumer:分区分配规则 offset 保存(默认:_consumer_offsets 主题、其它:手动维护Offerset(MySQL)带事务,精准一次消费

image

分层的好处

  • 复杂问题拆解为多层
  • 减少重复开发(可以去中间层取数,不用每次都去原始层)
  • 隔离原始数据,例如:异常数据、敏感数据(用户电话…)

数据存储策略

  • 原始层保持数据原貌,不进行脱敏和清洗
  • 创建分区表(例如:日期分区),防止全表扫描
  • 数据压缩,减少磁盘占用(如:LZO、gzip、snappy)
  • 列式存储提高查询效率(如:Parquet、ORC)

离线架构:追求系统的稳定性、考虑到公司未来的发展,数据量一定会变得很大、早期的时间实时业务使用 SparkStreaming(微批次)

  • 优点:耦合性低、稳定性高
  • 缺点:时效性差

实时架构:Kafka集群高可用,数据量小,所有机器存在同一个机房,传输没有问题,

  • 优点:时效性好 Flink
  • 缺点:耦合性高,稳定性低

image
image
image

标签:数仓,full,架构,分区,数据仓库,实时,Kafka,维度,数据
From: https://www.cnblogs.com/vipsoft/p/16932812.html

相关文章

  • 容器指南之容器架构及常用指令
    1.Docker系统架构Dockerdaemon:守护进程。通过dockerdaemon 命令启动,它负责容器的创建、运行和监控,还负责镜像的构建和储存。Clinet:客户端。通过HTTP 和 Docker 守......
  • 【《硬件架构的艺术》读书笔记】03 处理多个时钟(3)
    3.8异步FIFO(双时钟FIFO)  如上图,X通过xclk将数据写入FIFO,Y通过yclk将数据读出。注意这里写满标志信号在写时钟域,空信号在读时钟域。对比握手信号,异步FIFO用于对性能......
  • 云原生架构(一)原理概览
    系列目录云原生架构(一)原理概览云原生架构(二)环境搭建云原生架构(三)简单样例云原生架构(四)源码详解云原生架构(五)总结提高一、行业现状 云原生架构真正进入大众视野要从......
  • HANA 架构图
    ......
  • 云原生架构学习计划
    一、背景云原生已经是架构师躲不开的一个门槛,有必要拿下。这里列一下博主对云原生的学习之路。也可以给各位同学打个样,找到入门一个架构的方法。二、计划2.1总耗时一......
  • StoneDB 首席架构师李浩:如何选择一款 HTAP 产品?
    作者:李浩责编:宇亭当我们选择一款HTAP数据库时,总是先被其相关文档里所描述的优异性能所吸引。卓越的性能是我们选择一款产品的出发点,因为我们希望该款产品能够解决我......
  • 程序与架构——读《深入浅出WPF》第6章
    一。程序的本质:    数据+算法二。精力过多放在UI上的转变:    UI为核心时,数据处被动状态。===>>>以数据为核心,数据处主动地位。三。三层结构——以数据......
  • 【UE架构】虚幻GamePlay架构
    一.Actor和Component1.1创建Actor的两种方式静态创建:直接在场景中编辑拖拽,创建由引擎构建场景时进行创建无需编码,更加直观简单但会影响游戏启动速度,增加场......
  • 影响金融架构的主要合规法规
    金融属于强监管行业,跟技术架构方案紧密相关的几个法规如下:一、支付牌照相关2010年6月14日,中国人民银行发布《非金融机构支付服务管理办法》,并于当年9月1日起施行,这就是支......
  • 服务端架构演进史
    一、引子当我们入行成为一名后端程序员时,就很羡慕架构师这个岗位的人,视同神一样的存在。而要成为一名后端架构师,必会技能就是分布式架构。今天我们不讲各种组件怎么去实现......