实时数仓构建:Flink+OLAP查询的一些实践与思考

这篇具有很好参考价值的文章主要介绍了实时数仓构建:Flink+OLAP查询的一些实践与思考。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天是一篇架构分享内容。

1.概述

以Flink为主的计算引擎配合OLAP查询分析引擎组合进而构建实时数仓,其技术方案的选择是我们在技术选型过程中最常见的问题之一。也是很多公司和业务支持过程中会实实在在遇到的问题。

很多人一提起实时数仓,就直接大谈特谈Hudi,Flink的流批一体等,但实际上,实时数仓包括任何架构体系的构建如果我们抛开成本和稳定性谈技术,那都是有耍流氓的嫌疑

本文主要给大家进行实时数仓构建的技术选型提供一些经验与思考,面试中如果被问及,也可以谈谈。

2.实时数仓的现状

目前大多数公司的实时数仓业务完全基于Flink计算引擎来搭建实时数据链路,尤其是大多数具有中大流量,或者业务背景较为复杂以及对数据要求强时效性的场景中,无论是做数据关联,还是做业务指标分析,都具有明显的优势,Flink在这些场景中不可或缺。

但是在一些场景中,实时数仓也存在很多问题:

2.1复杂的多表关联分析

在Flink中实现较为完美的多源关联或者说多维度关联比较困难,在多源或者说大规模数据情况下做实时任务,要考虑的问题很多:比如大家经常遇到的join key热点问题,TTL问题,维表本身也会遇到查询的瓶颈,所以又会带来缓存解决方案以及限流问题等。

2.2指标口径的频繁变更

相信大家都遇到过类似的问题,不管是在离线场景还是在实时场景,都会面临频繁的指标口径变更。而在Flink中直接生产多个指标,那么这个任务会变得尤为敏感。每一次的口径变更都会让你痛不欲生。例如状态不兼容的问题,数据需要回溯,主备任务的测试切换问题等等,这个时候可能会想,我为什么要用Flink做实时开发。

2.3小规模非核心场景

Flink本身是需要通过代码开发平台来实现数据处理,这样其整个开发流程就会变得比较重。而在Flink侧做一些小规模非核心场景的任务,开发,测试,预上线,上线。开发耗时长,计算成本高。整个投入产出比很低。而且后期维护也需要耗费大量人力,且运维要求高,需要Flink代码能力。

3.Flink+OLAP查询分析优劣势

所以如果公司的业务场景是完全基于Flink为主+OLAP查询分析为辅助的场景,这种架构在数据处理和分析领域具有显著的优势,但同时也存在一些劣势。

3.1优势:

  • 实时处理能力:Flink作为一个流处理框架,具有强大的实时数据处理能力。它能够实时摄入数据流,并进行近实时的计算和分析,满足对数据时效性要求较高的场景。

  • 低延迟:Flink能够保证数据的低延迟处理,快速响应业务需求,这对于需要快速决策的场景非常重要。

  • 灵活的窗口机制:Flink支持各种窗口机制,可以根据业务需求灵活定义时间窗口,实现对历史数据的聚合和分析。

  • 批流统一:Flink支持批处理和流处理的统一,可以方便地处理批量数据和实时数据,提高数据处理效率。

  • OLAP查询辅助:结合OLAP查询,Flink可以处理复杂的数据分析需求。OLAP查询具有强大的多维分析能力和快速的数据查询速度,能够为决策提供有力支持。

  • 容错性:Flink提供了精确一次的处理语义,保证了数据处理的可靠性。即使在系统故障的情况下,也能够保证数据的一致性。

3.2劣势:

  • 复杂性:Flink作为一个通用的流处理框架,其使用和维护具有一定的复杂性。需要具备一定的编程和数据处理解能力才能有效地使用Flink。

  • 硬件资源要求较高:为了支持实时数据处理和复杂分析,需要较高的硬件资源,包括计算资源、存储资源和网络资源等。这会增加系统的建设和维护成本。

  • 数据一致性挑战:在实时数据处理场景中,如何保证数据的一致性是一个挑战。虽然Flink提供了精确一次的处理语义,但在某些复杂场景下,仍然需要额外的机制来保证数据的一致性。

  • 生态系统不够完善:虽然Flink是一个成熟的流处理框架,但其生态系统相比一些其他大数据处理框架可能还不够完善。可能需要依赖其他工具和组件来完善功能。

  • 对历史数据支持不足:相比传统的OLAP系统,Flink在处理历史数据方面可能存在不足。虽然可以通过存储历史数据来解决这个问题,但会增加系统的复杂性和成本。

综上所述,Flink为主+OLAP查询为辅助的场景具有实时处理能力、低延迟、灵活的窗口机制等优势,但也存在复杂性、硬件资源要求较高、数据一致性挑战等劣势。

4.解决思路构想

在上面的一系列问题中,我们提出的解决方案必然是要避免其缺点,发扬其优点。可以换个思路,我们将计算和存储完全下移到OLAP引擎侧,利用Clickhouse/Doris等数据库的能力,降低数仓链路的开发和维护成本。

事实上,目前各大公司都有或多或少这方面的尝试与应用。

我们以Clickhouse作为核心存储和计算平台,主要是面向近实时的场景。

那么基于这个平台,我们需要做哪些功能来完善它呢?

4.1.开发和测试平台

需要实现一个可以写Clickhouse Sql任务的平台,能够提供从表到表的数据转化链路。包括但不限于提供接入数据,开发SQL,测试任务,提供查询,导出数据的功能。

4.2.数据建模工具

基于Clickhouse Sql构建一个表元数据管理,数据仓库管理,集市管理,以及任务管理的功能。

4.3.数据质量

需要提供数据质量监测能力

4.4.数据治理

提供完整的血缘上报,进行全链路追踪。

表的热度分析,慢SQL的监测,结合表热度进行存储分层处理,以及权限和成本问题等。

5.方案总结

基于上面解决思路,可以想象,我们的解决方案已经很清晰了,主要有两大模块。

1.一个实时性支持良好的数据传输通道

2.一个OLAP分析引擎。

例如

可以开发Flink生成自动化模板化的接入数据任务,包括但不限于客户端日志,服务端日志,数据库日志等。解析完成写入kafka.

通过Clickhouse物化视图的方案读取kafka数据,进而构建出近实时的数仓

以上两个步骤我们完全可以灵活选择,例如第一步我可以通过模板化的FlinkSql来实现。或者使用FlinkCDC功能等。

而Clickhouse还可以用市面上相近的数据库来替代,如Doris或者StarRocks等。

以上,为本次分享内容。

感谢阅读。

按例,欢迎点击此处关注我的个人公众号,交流更多知识。文章来源地址https://www.toymoban.com/news/detail-852645.html

到了这里,关于实时数仓构建:Flink+OLAP查询的一些实践与思考的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apache Flink X Apache Doris构建极速易用的实时数仓架构

    大家好,我叫王磊。是SelectDB 大数据研发。今天给大家带来的分享是《Apache Flink X Apache Doris构建极速易用的实时数仓架构》。 下面是我们的个人介绍:我是Apache Doris Contributor 和阿里云 MVP。同时著有《 图解 Spark 大数据快速分析实战》等书籍。 接下来咱们进入本次演讲的正题

    2023年04月24日
    浏览(31)
  • 如何基于 Apache Doris 与 Apache Flink 快速构建极速易用的实时数仓

    随着大数据应用的不断深入,企业不再满足离线数据加工计算的时效,实时数据需求已成为数据应用新常态。伴随着实时分析需求的不断膨胀,传统的数据架构面临的成本高、实时性无法保证、组件繁冗、运维难度高等问题日益凸显。为了适应业务快速迭代的特点,帮助企业

    2024年02月12日
    浏览(36)
  • 基于 Flink 构建实时数据湖的实践

    本文整理自火山引擎云原生计算研发工程师王正和闵中元在本次 CommunityOverCode Asia 2023 数据湖专场中的《基于 Flink 构建实时数据湖的实践》主题演讲。 实时数据湖是现代数据架构的核心组成部分,随着数据湖技术的发展,用户对其也有了更高的需求:需要从多种数据源中导入

    2024年02月04日
    浏览(33)
  • Flink电商实时数仓(三)

    维度层的重点和难点在于实时电商数仓需要的维度信息一般是动态的变化的,并且由于实时数仓一般需要一直运行,无法使用常规的配置文件重启加载方式来修改需要读取的ODS层数据,因此需要通过Flink-cdc实时监控MySql中的维度数据配置信息表,实时动态的发布广播信息。主

    2024年02月03日
    浏览(39)
  • Flink电商实时数仓(四)

    业务数据:数据都是MySQL中的表格数据, 使用Flink SQL 处理 日志数据:分为page页面日志(页面信息,曝光信息,动作信息,报错信息)和启动日志(启动信息,报错信息),使用Flink Stream API处理 五种日志数据: “start”; 启动信息 “err”; 错误信息 “display”; 曝光信息 “ac

    2024年01月17日
    浏览(38)
  • Flink实时电商数仓(八)

    主要任务:从kafka页面日志主题读取数据,统计 七日回流用户:之前活跃的用户,有一段时间不活跃了,之后又开始活跃,称为回流用户 当日独立用户数:同一个用户当天重复登录,只算作一个独立用户。 读取kafka页面主题数据 转换数据结构: String - JSONObject 过滤数据,u

    2024年02月03日
    浏览(27)
  • Flink实时电商数仓(十)

    app BaseApp: 作为其他子模块中使用Flink - StreamAPI的父类,实现了StreamAPI中的通用逻辑,在其他子模块中只需编写关于数据处理的核心逻辑。 BaseSQLApp: 作为其他子模块中使用Flink- SQLAPI的父类。在里面设置了使用SQL API的环境、并行度、检查点等固定逻辑。 bean:存放其他子模块中

    2024年02月03日
    浏览(32)
  • Flink+Doris 实时数仓

    Doris基本原理 Doris基本架构非常简单,只有FE(Frontend)、BE(Backend)两种角色,不依赖任何外部组件,对部署和运维非常友好。架构图如下 可以 看到Doris 的数仓架构十分简洁,不依赖 Hadoop 生态组件,构建及运维成本较低。 FE(Frontend)以 Java 语言为主,主要功能职责: 接收用户

    2024年02月07日
    浏览(37)
  • Flink 实时数仓 (一) --------- 数据采集层

    1. 普通实时计算与实时数仓比较 普通的实时计算优先考虑时效性,所以从数据源采集经过实时计算直接得到结果。如此做时效性更好,但是弊端是由于计算过程中的中间结果没有沉淀下来,所以当面对大量实时需求的时候,计算的复用性较差,开发成本随着需求增加直线上升

    2024年02月06日
    浏览(37)
  • 【大数据】Doris 构建实时数仓落地方案详解(三):Doris 实时数仓设计

    本系列包含: Doris 构建实时数仓落地方案详解(一):实时数据仓库概述 Doris 构建实时数仓落地方案详解(二):Doris 核心功能解读 Doris 构建实时数仓落地方案详解(三):Doris 实时数仓设计 前面已经解读实时数仓的背景、技术线路和应用场景,这里具体从实现的角度来介

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包