玖叶教程网

前端编程开发入门

数仓建设之搭建实时数仓(实时数仓案例)

一、为何要搭建实时数仓

随着业务快速发展或部分业务对实时依赖度大,使得越来越多的业务指标需要实时查看,以便于更好的进行业务分析、业务风控等,尤其在举行活动的时候,能够通过实时大屏等内容更好的把握活动的各项指标趋势。

二、实时架构及组件

1、架构

1.1、流批一体架构

1.2、lambda架构

Lambda本来是为了在处理大规模数据时,同时发挥流处理和批处理的优势,但是lambda架构也有如下痛点:

  • 需要维护实时、离线两套引擎
  • 需要维护两套业务逻辑相同的代码
  • 因为两条不同的数据链路,容易造成数据不一致
  • 数据更新成本高,需要重跑两个链路

架构是否需要盲目追随流批一体? 个人认为还是得看业务,不要盲目去追最新架构 ,如果因为数据格式或者重实时业务(例如直播,实时占比60%以上)走湖仓一体合适,如果业务量较小例如(rps 都个位数)建议还是选择lambda架构。

2、组件

2.1、计算引擎

  • Storm(曾经)
  • Spark StructedStreaming
  • Flink(目前主流)

2.2、中间件

  • Kafka(主流)
  • Rocketmq
  • Pulsar

2.3、olap

  • Clickhouse
  • Doris
  • Adb、Hologres(阿里自研)

三、实时开发流程

1、数据接入

  1. 通过数据同步工具(flink cdc、maxwell、canal等) 将业务库(MySQL等)binlog数据接入中间件(Kafka、RocketMQ、Pulsar)的Topic中并通过实时平台(自研平台、阿里Dataphin、VVP)配置完成实时ODS流表(读取Topic内容(像视图))同步,并对实时链路配置报警规则(例如实时数据延迟大于1分钟、任务失败、内存告警等)。
  2. 自研数据接入/同步平台。

2、模型开发

2.1、模型开发简介

通过实时平台及计算引擎对ODS数据进行Join、清洗、转换、过滤、聚合、维度退化等(模型规范依旧采用之前建设思想) 完成DWD、DWS、ADS流表模型设计(部分公司这里不做dws,可能涉及原因链路过长影响实时进展),最后进行数据可视化。

2.2、模型设计原则

  1. 高内聚,低耦合 主要从数据业务特性和访问特性两个角度来考虑:将业务相近或者相关的数据、粒度相同数据设计为一个逻辑或者物理模型;将高概率同时访问的数据放一起,将低概率同时访问的数据分开存储。
  2. 一致性
  • 流/表命名规范需清晰、一致,流/表名需易于下游理解和使用。
  • 字段释义注释、核心逻辑注释、代码整体功能注释规范。
  • 相同的字段在不同表字段名相同,可参考《OneData规范化数据定义》说明。
  1. 易用性 底层公用的处理逻辑应该放在实时公共流进行封装与实现,不要让公共的处理逻辑暴露给应用层实现,不要让公共逻辑在多处同时存在,尽量通过标签化处理。
  2. 时效性与易用性平衡 适当的数据冗余换取下游查询性能,不宜过度冗余与数据复制,结合实时指标处理性能和实际应用场景进行权衡。

2.3、平台化

自研实时模型开发平台。

2.4、任务测试

3、数据校验

根本是解决实时离线数据无法保持一致。

  1. 统一指标口径,同时复用指标中心逻辑。
  2. 保障数据来源一致。
  3. 拉消费点位跟离线比对。

4、数据落地

将ADS表数据落地OLAP(Doris、Clickhouse等)。

5、可视化

通过实时大屏工具(可通过阿里云Quick、DataV、网易有数、Finereport、开源Apache Superset)对ads数据进行展示。

6、实时监控

  1. 延迟告警
  2. 任务失败告警
  3. 主键冲突告警
  4. 数据波动告警

四、实时链路优化

1、调优目的

让任务在目标峰值RPS下,无延迟,且集群资源利用率在合理范围内。

2、优化思路

  • 并发调优
  • 内存调优
  • sql调优
  • 算子链优化
  • checkpoint间隔合理
  • 维表关联调优

Async+partitionjoin+缓存 原始的维表 JOIN 是同步访问的方式,来一条数据,去数据库查询一次,等待返回后输出关联结果。可以发现网络等待时间极大地阻碍了吞吐和延迟。为了解决同步访问的问题,异步模式可以并发地处理多个请求和回复,从而连续的请求之间不需要阻塞等待。

目前 HBase 提供三种缓存策略,分别是:

  • None: 无缓存。
  • LRU: 最近使用策略缓存,需要配置相关参数:缓存大小(cacheSize)和 缓存超时时间(cacheTTLMs)。
  • ALL: 全量缓存策略。即在 Job 运行前会将远程表中所有数据 load 到内存中,之后所有的维表查询都会走 cache,cache 命中不到则不存在,并在缓存过期后重新加载一遍全量缓存。

五、实时技术如何量化产出

  1. 实时大屏开发 or 改造。
  2. 治理-监控保障体系迭代优化:由于近期新增较多无效报警,所以对监控指标、内容优化。
  3. 治理-资源消耗。
  4. 实时模型开发/治理。
  5. 实时风控指标开发。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言