2024年最全Doris实战——结合Flink构建极速易用的实时数仓_flink doris(1),最新大数据开发笔试题分享

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

在数据同步上,通过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 数据一致性保证

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

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

  • 最多⼀次(At-Most-Once):发送⽅仅发送消息,不期待任何回复。在这种模型中,数据的⽣产和消费过程中可能出现数据丢失的问题。
  • ⾄少⼀次(At-Least-Once):发送⽅不断重试,直到对⽅收到为⽌。在这个模型中,⽣产和消费过程都可能出现数据重复。
  • 精确⼀次(Exactly-Once):能够保证消息只被严格发送⼀次,并且只被严格处理⼀次。这种数据模型能够严格保证数据⽣产和消费过程中的准确⼀致性。

Flink CDC通过Flink Checkpoint 机制结合Doris两阶段提交可以实现端到端的Exactly Once语义,具体过程分为四步:

  • 事务开启(Flink Job启动及Doris事务开启):当Flink任务启动后,Doris Sink 会发起 Precommit 请求,随后开启写⼊事务。
  • 数据传输(Flink Job的运行和数据传输):在Flink Job运行过程中,Doris Sink不断从上游算子获取数据,并通过 HTTP Chunked 的⽅式持续将数据传输到 Doris。
  • 事务预提交:当Flink开始进行Checkpoint时,Flink会发起Checkpoint请求,此时Flink各个算子会进行Barrier对齐和快照保存,Doris Sink发出停止 Stream Load 写⼊的请求,并发起一个事务提交请求到Doris。这步完成后,这批数据已经完全写入Doris BE中,但是BE没有进行数据发布前对用户是不可见的。
  • 事务提交:当Flink的Checkpoint完成之后,将通知各个算子,Doris发起一次事务提交到Doris BE,BE对此次写入的数据进行发布,最终完成数据流的写入。

综上可知,利用 Flink CD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值