大数据架构演变

一、离线数仓

缺点:

  1. ETL计算、存储、时间成本高
  2. 数据处理链路过长
  3. 无法支持实时、近实时的数据分析
  4. 数据采集对业务库造成影响

二、Lambda架构,离线实时分开

缺点:

  1. 组件多,不方便管理
  2. 很难保证数据一致
  3. 数据探查困难,出现问题很难排查

三、Kappa架构,实时为主

缺点:

  1. kafka无法支持海量存储
  2. kafka无法支持高效的OLAP
  3. 无法复用数据血缘管理体系
  4. kafka不支持update 

四、数据湖,流批一体

数据采集:之前是sqoop,flume,maxwell,datax等各种组件采集,引入组件多,链路复杂,现在是cdc千表入湖

计算引擎:之前spark、impala、presto、flink,现在flink流批一体

即席查询:之前impala、presto、hbase、kudo,现在doris,starrocks

五、实战:Flink+Paimon数据湖架构

Apache Paimon | Apache Paimon

1、Paimon官网基础知识

  1. 采集使用CDC Ingestion,可以同步表、同步库
  2. 常见配置看Maintenance-Configurations,包括了file.format='parquet',flie.block-size等默认参数
  3. 表更日志看Table with PK(主键表)-Changelog Producer
  4. 快照管理看Maintenance-Manage Snapshots
  5. 表引擎看Merge-Engine,包括了部分更新、聚合等

 

2、LSM-Tree 日志结构合并树

关系型数据库:重点是查询,在读性能上有很高的要求, 通过二分查找、hash、B+树等方式虽然数据查询很快,但是底层磁盘造成了大量随机写。同时对表的要求很高,比如结构化、索引、主键等。

因为磁盘随机写慢,顺序写快的特性,想要提高写操作性能,设计成顺序写。顺序写很简单,就是直接将数据追加到文件后面,但是读取/查询是就需要扫描所有数据,很浪费时间。

LSM-Tree:日志结构合并树,是一种分层,有序,面向磁盘的数据结构,其核心思想就是充分利用了磁盘批量顺序写要远比随机写性能快很多,对读和写性能做了权衡。

  1. 保证写操作性能:发挥磁盘特性,一次性地读取或写入固定大小的一批数据,尽可能减少随机寻道操作。(写入LSM树的新记录将首先缓存在内存中。当内存缓冲区满时,内存中的所有记录将被排序并刷新到磁盘,也就是批量写入
  2. 保证读操作性能:
    1. 通过划分内存+磁盘的多层合并结构,及各种优化尽量保证读操作性能,按照时间顺序来存储数据,最新的数据存放在内存中,方便实时计算;
    2. LSM树把文件分成多个sorted run(分成很多批),一个sorted run包含多个文件,每个文件中的数据按主键排序,实现了磁盘的分批顺序写入,查询的时候需要将所有Sorted Run合并起来,并根据时间戳合并相同主键的数据;
    3. 太多Sorted Run合并将导致查询性能较差,甚至内存不足。为了限制Sorted Run的数量,我们必须偶尔将多个Sorted Run合并为一个大的Sorted Run。这个过程称为Compaction

但是过于频繁的Compaction可能会导致写入速度变慢,这是查询和写入性能之间的权衡。

HBase、MongoDB等存储引擎都是LSM树,kafka用到了磁盘顺序读写。

3、Paimion写入流程

  1. 写操作触发,首先将数据记录在写前日志(Write Ahead Log)(相当于checkpoint),以便故障时恢复数据。
  2. 把数据追加到内存中的C0层
  3. 当C0层数量达到一定大小,就把C0和C1层以归并的方式合并覆盖C1,这个过程称为Compaction。合并出来的新文件会顺序写入磁盘,替换掉旧文件。当C1层达到一定大小,会继续和下层合并,合并之后所有旧文件都可以删除。
  4. 需要注意,写入可能重复,新版本会覆盖老版本,比如a老版本已经来到Ci层了,C0层来了个新版本,这个时候不会去更新下层老文件,而只是在C0层写入一个新的数据,等待后面合并自动覆盖。

参考视频:011.精通Paimon—大数据环境概览_哔哩哔哩_bilibili

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

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

相关文章

进程间通讯

简介: 进程间通讯方式有: 1.内存映射(mmap): 使用mmap函数将磁盘空间映射到内存 2.管道 3.信号 4.套接字(socket) 5.信号机制 通过进程中kill函数,去给另一个函数发送信号&a…

毕业项目推荐:基于yolov8/yolov5的行人检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

[桌面运维]windows自动设置浅深色主题

设置自动浅色/深色主题 我看很多up主的教程过于繁琐,需要添加四个功能,并且有些还不能生效! 大多数都是教程: 自动任务栏浅色 add HKCUSOFTWAREMicrosoftWindowsCurrentVersionThemesPersonalize/v SystemUsesLightTheme /t …

LQ quarter 5th

目录 B. 开赛主题曲 C. BlueAI E. 精准难度 B. 开赛主题曲 (1)两层循环枚举所有子串。第一层子串长度,第二层子串起点 (2)判子串是否合法还要一个 for,26 * 26 * 2e5 快要超时,因此计算每个字母…

Directx12 chapter4

官方的初始化需要的组件 Initialize 初始化涉及到首次设置全局变量和类,initialize 函数必须准备管道和资产。 初始化管道。 启用调试层。创建设备。创建命令队列。创建交换链。创建渲染器目标视图 (RTV) 描述符堆。 备注 可将描述符堆视为描述符的数组。 其中…

STM32 软件I2C读写

单片机学习! 目录 前言 一、软件I2C读写代码框架 二、I2C初始化 三、六个时序基本单元 3.1 引脚操作的封装和改名 3.2 起始条件执行逻辑 3.3 终止条件执行逻辑 3.4 发送一个字节 3.5 接收一个字节 3.5 发送应答&接收应答 3.5.1 发送应答 3.5.2 接…

计算机网络--UDP和TCP课后习题

【5-05】 试举例说明有些应用程序愿意采用不可靠的UDP, 而不愿意采用可靠的TCP。 解答: 这可能有以下几种情况。 首先,在互联网上传输实时数据的分组时,有可能会出现差错甚至丢失。如果利用 TCP 协议对这些出错或丢失的分组进行重传&…

【C++】B2099 矩阵交换行

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述题目描述输入格式输出格式输入输出样例输入 #1输出 #1 💯题目分析💯不同解法分析我的做法实现步骤:优点:不足&#…

[微服务]redis主从集群搭建与优化

搭建主从集群 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 1. 主从集群结构 下图就是一个简单的Redis主从集群结构: 如图所示,集群中有一个master节点、两个s…

使用WebSocket 获取实时数据

回车发送数据&#xff0c;模拟服务器发送数据 效果图&#xff1a; 源码&#xff1a; <template><div><h1>WebSocket 实时数据</h1><input type"text" v-model"ipt" keyup.enter"sendMessage(ipt)"><div v-if…

Element-UI:如何实现表格组件el-table多选场景下根据数据对某一行进行禁止被选中?

如何实现表格组件el-table多选场景下根据数据对某一行进行禁止被选中&#xff1f; 在使用 Element UI 的 Table 组件时&#xff0c;如果你想要禁用某一行的选中&#xff08;特别是在多选模式下&#xff09;&#xff0c;可以通过自定义行的 selectable 属性来实现。selectable …

移动端自动化测试Appium-java

一、Appium的简介 移动端的自动化测试框架 模拟人的操作进行功能自动化常用于功能测试、兼容性测试 跨平台的自动化测试 二、Appium的原理 核心是web服务器&#xff0c;接受客户端的连接&#xff0c;接收客户端的命令&#xff0c;在手机设备上执行命令&#xff0c;收集命令…

Geoserver修行记-后端调用WMS/WMTS服务无找不到图层Could not find layer

项目场景 调用geoserver地图服务WMS,找不到图层 我在进行地图服务调用的时候&#xff0c;总是提示我找不多图层 Could not find layer&#xff0c;重点是这个图层我明明是定义了&#xff0c;发布了&#xff0c;且还能够正常查看图层的wms的样式&#xff0c;但是在调用后端调用…

深入探讨 Android 中的 AlarmManager:定时任务调度及优化实践

引言 在 Android 开发中&#xff0c;AlarmManager 是一个非常重要的系统服务&#xff0c;用于设置定时任务或者周期性任务。无论是设置一个闹钟&#xff0c;还是定时进行数据同步&#xff0c;AlarmManager 都是不可或缺的工具之一。然而&#xff0c;随着 Android 系统的不断演…

玉米识别数据集,4880张图,正确识别率可达98.6%,支持yolo,coco json,pasical voc xml格式的标注,可识别玉米

玉米识别数据集&#xff0c;4880张图&#xff0c;正确识别率可达98.6%&#xff0c;支持yolo&#xff0c;coco json,pasical voc xml格式的标注&#xff0c;可识别玉米 数据集下载地址&#xff1a; yolo v11:https://download.csdn.net/download/pbymw8iwm/90230969 yolo v9:…

【UI自动化测试】selenium八种定位方式

&#x1f3e1;个人主页&#xff1a;謬熙&#xff0c;欢迎各位大佬到访❤️❤️❤️~ &#x1f472;个人简介&#xff1a;本人编程小白&#xff0c;正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话&#xff0c;记得点赞&#x1f44d;、收藏⭐️、评论&#x1f4ac;&am…

【前端系列01】优化axios响应拦截器

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、axios响应拦截器&#xff1a;☀️☀️☀️2.1 为什么前端需要响应拦截器element ui的消息组件 一、前言&#x1f680;&#x1f680;&#x1f680; ☀️ 回报不在行动之后&#xff0c;回报在行动之中。 这个系列可…

【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1. 选择结构基本概念 2. 主要语句类型​&#xff08;if、if-else、switch&#xff09; 3. 跃迁函数中变量的取值范围 4. 计算阶跃函数的值 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;输入x的值&#x…

利用 NineData 实现 PostgreSQL 到 Kafka 的高效数据同步

记录一次 PostgreSQL 到 Kafka 的数据迁移实践。前段时间&#xff0c;NineData 的某个客户在一个项目中需要将 PostgreSQL 的数据实时同步到 Kafka。需求明确且普遍&#xff1a; PostgreSQL 中的交易数据&#xff0c;需要实时推送到 Kafka&#xff0c;供下游多个系统消费&#…

【C++面向对象——类的多态性与虚函数】编写教学游戏:认识动物(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 详细说明&#xff08;类的设计&#xff09; 基类&#xff1a; Animal 派生类: 应用程序说明&#xff1a; 相关知识 1. 虚函数与多态 一、多态的概念与意义 二、虚函数实现多态的原理 三、虚函数的语法细节 2. 纯虚函数与抽象类 一、纯虚…