湖仓一体架构解析:数仓架构选择(第48天)

系列文章目录

1、Lambda 架构
2、Kappa 架构
3、混合架构
4、架构选择
5、实时数仓现状
6、湖仓一体架构
7、流批一体架构


文章目录

      • 系列文章目录
      • 前言
      • 1、Lambda 架构
      • 2、Kappa 架构
      • 3、混合架构
      • 4、架构选择
      • 5、实时数仓现状
      • 6、湖仓一体架构
      • 7、流批一体架构


前言

本文解析了Lambda 架构,Kappa 架构,湖仓一体架构,流批一体架构,以及在大数据场景中,如何选择架构。

1、Lambda 架构

在Lambda架构中,为了计算一些实时指标,就在原来的离线数仓基础之上增加了一个实时处理的链路,并对数据源做流式改造:把消息发送到消息队列中(大数据中常用Kafka),实时计算去消费消息队列中的数据,完成实时指标计算,推送到下游的数据服务中去,由数据服务层完成离线与实时结果的合并。

在这里插入图片描述

Lambda架构总结
优点: Lambda架构使开发人员能够构建大规模分布式数据处理系统,它具备很好的灵活性和可扩展性。也对硬件故障和人为失误有很好的容错性缺点:1- Lambda架构最大的问题是需要维护两套计算链路,开发和维护成本2- 计算资源占用增多,服务器存储大

2、Kappa 架构

Kappa 架构可以认为是 Lambda 架构的简化版(只要移除 lambda 架构中的批处理部分即可)。

Kappa架构的核心思想是通过改进流计算系统来解决数据全量处理的问题,使得实时计算和批处理过程使用同一套代码

在这里插入图片描述

Kappa 架构的重新处理过程:

(1)选择一个具有重放功能的、能够保存历史数据并支持多消费者的消息队列,根据需求设置历史数据保存的时长,比如 Kafka,可以保存全部历史数据。

(2)当某个或某些指标有重新处理的需求时,按照新逻辑写一个新作业,然后从上游消息队列的最开始重新消费,把结果写到一个新的下游表中。

(3)当新作业赶上进度后,应用切换结果表,读取 2 中产生的新结果表。

(4)停止老的作业,删除老的结果表。

在这里插入图片描述

Kappa架构总结
优点: 使用一条计算链路完成离线计算和实时计算,节约成本缺点:1- Kappa架构最大的问题是需要重新处理历史数据,程序处理数据的吞吐量会降低2- 数据可能丢失3- 不适用于离线计算和实时计算代码逻辑不一致的情况。举例: 全局去重4- 消息中间件临时存储的数据量和回溯的数据量有性能瓶颈5- 无法复用目前已经非常成熟的基于离线计算的数据质量管理体系(数据治理)

3、混合架构

Lambda 架构与 Kappa 架构的对比:

在这里插入图片描述

4、架构选择

5、实时数仓现状

在这里插入图片描述

在这里插入图片描述

总结:
1- Lambda架构的最大缺点是需要维护两条链路,维护和计算成本高
2- Kappa架构最大的缺点是数据处理的吞吐量低
3- Kappa架构可以称之为真正的实时数仓,目前企业中实时数仓最常使用的计算框架Flink

6、湖仓一体架构

在这里插入图片描述

湖仓一体架构总结
优点:1- 可以存储海量数据2- 可以对中间结果进行查询3- 可以复用离线计算中形成的数据质量管理体系(数据治理)4- 数据可以进行update更新操作缺点:1- 相对Flink实时数仓来说,数据湖对数据的处理延迟相对比较高。数据的分析查询耗时基本在10秒及以上2- 如果基于数据湖搭建Lambda架构,这也是相当于需要维护两条线路

7、流批一体架构

在这里插入图片描述

理念:使用同一套API、同一套开发范式来实现大数据的流式计算和批量计算,进而保证处理过程和结果数据的一致性。

  1. 数据集成流批一体:离线与实时是否使用统一数据采集方式;如统一通过 CDC 或者 OGG 将数据实时捕获推送到 kafka,批与流在从 kafka 中消费数据,载入明细层。
  2. 数据存储流批一体:离线与实时数据是否统一分层、统一存储;兼容数据的一致性和实时性。
  3. 处理逻辑流批一体:流与批处理是否使用统一 SQL 语法或者 ETL 组件,再通过底层分别适配流与批计算引擎,保证数据口径的一致性。
  4. 计算引擎流批一体:流与批使用同一套计算引擎,从根本上避免同一个处理逻辑流批两套代码 问题。
  5. 元数据流批一体:流与批使用同一套元数据管理系统,一方面方便管理,另一方面可以相互访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog语言和C语言的本质区别是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 用老石的一句话其实很好说…

QtQuick-QML类型系统-对象特性 (方法特性)

概念 对象类型的方法就是一个函数,可以执行,也可以和信号关联,这样发射信号会自动调用。 在C中,可以使用Q_INVOKABLE宏或者Q_SLOT宏进行注册的方式定义方法; 另外,也可以在QML文档的对象声明里使用下面的…

二分类损失 - BCELoss详解

BCELoss (Binary Cross-Entropy Loss) 是用于二分类问题的损失函数。它用于评估预测值和实际标签之间的差异。在 PyTorch 中,BCELoss 是一个常用的损失函数。以下是 BCELoss 的详细计算过程和代码实现。 BCELoss 的计算过程 给定一组预测值 y ^ \hat{y} y^​ 和实…

redis的使用场景-分布式锁

使用redis的setnx命令放入数据并用此数据当锁完成业务(但是如果用户操作途中出现异常导致超出指定时间会出现问题) Service public class StockService {Autowiredprivate StockDao stockDao; //mapper注入Autowiredprivate StringRedisTemplate redisT…

ssm框架整合,异常处理器和拦截器(纯注解开发)

目录 ssm框架整合 第一步:指定打包方式和导入所需要的依赖 打包方法:war springMVC所需依赖 解析json依赖 mybatis依赖 数据库驱动依赖 druid数据源依赖 junit依赖 第二步:导入tomcat插件 第三步:编写配置类 SpringCon…

【AI绘画】Midjourney V6初学者完全指南 参数篇

本文我们将详细介绍对图像生成结果产生重大影响的"参数"。 1. 什么是参数? 参数是一种添加到提示末尾以调整图像生成输出设置的方法。 它们用两个连字符"–“和特定字符串表示,如”–ar"、“–chaos”、"–r"等。 您也可以同时使用多个参数…

分布式控制算法——第一部分:基础概念与原理

分布式控制算法 文章目录 分布式控制算法第一部分:基础概念与原理1. 引言分布式控制的定义分布式控制系统的特点与优势分布式控制的应用场景 2. 分布式系统基础分布式系统的定义和特性分布式计算模型常见的分布式系统架构 3. 分布式控制基础分布式控制的基本原理中央…

面试题003:面向对象的特征 之 封装性

Java规定了4种权限修饰,分别是:private、缺省、protected、public。我们可以使用4种权限修饰来修饰类及类的内部成员。当这些成员被调用时,体现可见性的大小。 封装性在程序中的体现: 场景1:私有化(private)类的属性,提供公共(pub…

java项目中添加SDK项目作为依赖使用(无需上传Maven)

需求: 当需要多次调用某个函数或算法时,不想每次调用接口都自己编写,可以将该项目打包,以添加依赖的方式实现调用 适用于: 无需上线的项目,仅公司或团队内部使用的项目 操作步骤: 以下面这…

菜鸟从0学微服务——MyBatis-Plus

关于“菜鸟从0学微服务” 针对有编程基础,开始学习微服务的同学,我们陆续推出从0学微服务的笔记分享。力求从各个中间件的使用来反思这些中间件的作用和优势。 会分享的比较快,会记录demo演算和中间件的使用过程,至于细节的理论…

OPENMV脱机调阈值

用到了7个按钮,第一个用来选择是否进入调阈值模式。 后6个用来调整OPENMV阈值编辑器的6个滑动条 OPENMV代码 import sensor, image, time, pyb,math, display from pyb import UARTsensor.reset() sensor.set_framesize(sensor.QQVGA) sensor.set_pixformat(sens…

【数学建模】——【python】实现【最短路径】【最小生成树】【复杂网络分析】

目录 1. 最短路径问题 - 绘制城市间旅行最短路径图 题目描述: 要求: 示例数据: python 代码实现 实现思想: 要点: 2. 最小生成树问题 - Kruskal算法绘制MST 题目描述: 要求: 示例数据…

【Linux】模拟实现简易shell命令行:基于进程创建、进程等待、进程替换等知识的练习

程序功能:模拟实现一个自己的shell执行命令行。 涉及知识:字符串输入及操作函数、子进程创建、进程等待、进程替换、环境变量及获取、添加环境变量的函数 额外需要了解的功能函数:chdir(char* path)函数——改变当前…

PostgreSQL入门与进阶学习,体系化的SQL知识,完成终极目标高可用与容灾,性能优化与架构设计,以及安全策略

​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 概述基础篇初级篇进阶篇…

安装 GCC 编译器和开发工具

安装 GCC 编译器和开发工具 更新软件包管理器 在 CentOS 终端中,首先更新软件包管理器: sudo yum update -y安装 GCC 编译器和其他开发工具 运行以下命令安装 GCC 编译器和其他必要的开发工具: sudo yum groupinstall -y "Development T…

通过不同方式在 Vue 3 中传递路由参数

如何通过不同方式在 Vue 3 中传递路由参数,并在组件中使用 defineProps 或其他组合式 API 获取这些参数? 1. 通过 path 参数传递 最常见的方式,通过在路由路径中定义动态参数,并在路由配置中设置 props: true,将参数…

S5730举例

校园网络拓扑和设备 大学校园网络通常使用多层级结构,核心是承载所有交换机的中心点,而分支则连接到核心以支持更广泛的网络覆盖。华为的S5730交换机通常用于大型企业和校园网络中,提供高性能和可靠性。 STP (Spanning Tree Protocol) 作用&…

事务、函数和索引

目录 什么是事务? 事务的ACID原则: 事务的操作 事务的原子性、一致性、持久性 事务的隔离性 什么是事务的隔离性? 用什么方法实现事务的隔离性? MySQL中的锁 锁分类: 事务的隔离级别 事务并发问题 InnoDB的MVCC MVCC…

【C++】红黑树的应用(封装map和set)

✨ 青山一道同云雨,明月何曾是两乡 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 &…

Unity UGUI 实战学习笔记(3)

仅作学习,不做任何商业用途 不是源码,不是源码! 是我通过"照虎画猫"写的,可能有些小修改 不提供素材,所以应该不算是盗版资源,侵权删 拼UI 提示面板的逻辑 using System.Collections; using System.Col…