Flink实时电商数仓(一)

离线数据仓库

为数据分析而设计的企业级数据管理系统。常用的存储系统是Hadoop的HDFS文件系统,使用Hive进行数据计算,并将结果导入HDFS。离线数仓最明显的特点是T+1模式,今天只能算昨天的数据,时效性不够优秀。

实时数仓

  • 时效性:针对数仓大屏展示这个领域,10~15s刷新一次即可。
  • 核心架构
    • 日志服务器:采集日志文件
    • Kafka集群:消息缓存
    • HDFS存储:即hadoop集群
    • Hive分层数仓:ODS+DIM+DWD+DWS+ADS
    • Mysql数据库:用于大屏展示的数据

Flink实时电商数仓(一)_第1张图片

  • 离线架构分析
    • Maxwell 监控业务增量数据,是实时的
    • Flume使用Tail dir Source实时监控日志文件
    • Kafka集群收集数据,缓存消峰,事件流平台
    • 其中只有Hadoop的HDFS文件系统比较慢,不是实时的
  • 实时数仓架构
    • ods层:不做处理
    • dwd层:事务表,筛选后写回Kafka集群。(保持流状态)
    • dim层:HBase+Redis层存储
    • dws层:查询宽表,Doris架构
    • ads层:SpringBoot数据接口服务
    • 可视化:拉取接口数据,大屏展示

Flink实时电商数仓(一)_第2张图片

Doris框架

百度大数据研发,之前叫百度Palo。速度快并且支持10PB以上的超大数据集,唯一的缺点就是贵。对于生产环境机器的要求比较高,16核,64G内存,要固态内存,万兆网卡。

  • 使用场景:各种数据源经过简单处理后直接导入Doris中即可。

技术选型

  • ods层:kafka对应的主题,topic_db, topic_log
  • dwd层:保持数据流的形式,进行下一步的聚合。存储到kafka,主题名称对应不同的事实表。
  • dim层:存储维度表,便于数据聚合后进行维度关联join。因此需要存储到数据库中。
    • 备选框架:
      • mysql: 快,不适合海量数据的存储
      • redis: 更快,数据不是永久化存储的
      • hbase: 速度一般,数据键值对存储,适合通过key进行查询,支持海量数据存储
      • doris: 快,适合海量数据,使用成本较高,尽量不要让原始数据存储到doris
      • clickHouse: 列式存储,列式数据聚合操作,速度非常快。
    • 选型
      • redis: 数据对丢,×
      • clickHouse: dim层不需要聚合 ×
      • doris: dim层数据是未经处理的原始数据,成本太高 ×
      • mysql: 后续数据量增大后不适用 ×
      • Hbase + redis : redis进行旁路缓存,提升Hbase速度 √
    • dws层:读取dwd数据进行聚合,开窗聚合(10s), 再进行维度关联,后续进行灵活的数据接口编写,同时能够实现即席查询的功能。这里选择Doris存储,(之前是存储到clcikHouse)
    • ads层:Spring boot编写接口,查询doris的接口。

Flink实时电商数仓(一)_第3张图片

实时数仓雪花模型

dim层维度表数仓建模主要有两种模型,星型模式和雪花模型。生产环境中,实时数仓只需要保存一份最新的维度数据,如果涉及到历史数据,在离线数仓中计算即可。在实时数仓开始时,需要从离线数仓中同步一份完整的维度数据。

你可能感兴趣的:(flink,大数据)