当前位置:   article > 正文

最新Doris实战——结合Flink构建极速易用的实时数仓_flink doris(3)_flink doris数据清洗

flink doris数据清洗
  • 在实时数据部分,通过Binlog方式,将业务数据库中的数据变更(CDC,Change Data Capture)采集到实时数仓。同时,通过Flume -Kafka-Sink对日志数据进行实时采集,当不同来源的数据都采集到实时存储系统后,便可以基于实时存储系统来构建实时数仓。在实时数仓的内部,仍然会遵守传统数仓分层理论,将数据分为 ODS 层、DWD 层、DWS 层、 ADS 层以实现最大程度的模型复用。
  • 在离线数据部分,通过DataX定时同步的方式,批量同步业务库RDS中的数据。当不同来源的数据进入到离线数仓后,便可以在离线数仓内部,依赖Spark SQL 或Hive SQL 对数据进⾏定时处理,分离出不同层级(ODS 、DWD 、ADS 等)的数据,并将这些数据存在⼀个存储介质上,⼀般会采用如 HDFS 的分布式文件系统或者 S3 对象存储上。通过这样的⽅式,离线数仓便构建起来了。与此同时,为了保障数据的一致性,通常需要开启数据清洗任务,使用离线数据对实时数据进行清洗和定期覆盖,保障数据最终的一致性

技术架构的角度对传统数据技术栈进行分析,会发现为了迎合不同场景的需求,往往会采用多种技术栈,例如对于 OLAP 场景的多维分析,一般使⽤ Doris 或 Kylin、 Druid。除此之外,为应对半结构化数据的分析需求,例如日志分析与检索场景,通常会使⽤ ES 进行分析;面对高并发点查询的 Data Serving 场景会使⽤ HBase等。其中涉及到的数据组件有数十种,高昂的使用成本和组件间兼容、维护及扩展带来的繁重压力成为企业必须要面临的问题。

从上述介绍即可知道,传统的数据架构存在几个核心的痛点问题:

  • 传统数据架构组件繁多,维护复杂,运维难度非常高。
  • 计算、存储和研发成本都较高,与行业降本提效的趋势背道而驰。
  • 同时维护两套数据仓库(实时数仓和离线数仓)和两套计算(实时数据量和实时计算任务),数据时效性和一致性无法保证。

在此背景下,需要构建⼀个“极速、易用、统一、实时”的数据架构来解决这些痛点:

  • 极速:更快的查询速度,最大化提升业务分析人员的效率;
  • 易用:对于用户侧的使用和运维侧的管控,都提供了极简的使用体验;
  • 统一:异构数据与分析场景的统一,半结构化和结构化数据可以统一存储,多分析场景可以统一技术栈
  • 实时:端到端的高时效性保证,发挥实时数据的价值

**二、**构建极速易用的实时数仓架构

采取Doris和Flink 来构建极速易用的实时数仓,具体架构如下图所示。多种数据源的数据经过flink cdc 集成或flink job加工件处理后,入库到Doris或者Hive等湖仓中,最终基于Doris提供统一的查询服务。

在数据同步上,通过Flink CDC将RDS的数据实时同步到Doris。通过Routine Load将kafka等消息系统的数据实时同步到Doris,在数仓分层上,ODS层通常选择明细模型构建,DWD层可以通过SQL调度任务,对ODS数据抽取并获取,DWS和ADS层则可以通过物化视图和Rollup进行构建。在数据湖上, Doris ⽀持为 Hive、Iceberg 、Hudi 以及Delta Lake(todo)提供联邦分析和湖仓加速的能⼒。在数据应用上,Apache Doris 既可以承载批量数据加工处理的需求,也可以承载高吞吐的 Ad-hoc(数据探索) 和高并发点查询等多种应⽤场景。

三、解决方案

3.1 如何实现数据的增量与全量同步

3.1.1 增量及全量数据同步

在全量数据和增量的同步上,采取了Flink CDC来实现。其原理非常简答,Flink CDC实现了基于Snapshot的全量数据同步,基于 BinLog的实时增量数据同步。全量数据同步和增量数据同步可以自动切换,因此在数据迁移过程中,只需要配置好同步的表即可。当Flink任务启动时,优先进行历史表的数据同步,同步完成后自动切换成实时同步

3.1.2 数据一致性保证

如何保证数据一致性是大家重点关注的问题之一,那么在新架构是如何实现的呢?

数据⼀致性⼀般分为“最多⼀次” 、“⾄少⼀次”和“精确⼀次”三种模型。

  • 最多⼀次&#x
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/922603
推荐阅读
相关标签
  

闽ICP备14008679号