大数据平台发展及Hudi简要复习

第一代数据仓库——Vertica

最初,Uber使用MySQL作为他们的主要数据存储。然而,随着业务的扩展和数据量的增长,他们开始需要一个更强大的解决方案来进行大规模的数据分析和处理。

因此,Uber选择了Vertica作为他们的第一代数据仓库。Vertica是一个高性能的列式存储数据库,专为分布式大规模数据分析设计,能处理PB级别的数据,并支持SQL和许多BI工具。它为Uber的数据分析提供了更快、更强大的支持。(跟ClickHouse有点像)

目前Vertica国内用的很少,数据格式为JSON是比较低效的


第二代数据仓库——HBase

HBase是一个分布式、可扩展、支持大数据存储的NoSQL数据库,它是Google的BigTable的开源实现,作为Hadoop生态系统的一部分,HBase旨在提供高吞吐量的随机读写操作。HBase的核心特性包括水平可扩展性、列式存储、强一致性等。

在Uber的第二代数据仓库中,HBase被用作主要的数据存储和查询引擎,数据存储在HBase中,应用通过HBase的接口进行读写操作。同时,这个阶段的Uber还利用了Hadoop MapReduce等其他技术来进行数据处理和分析。

第二代底层优化为以HBase为中心,如上图所示,尽管HBase提供了大规模数据的随机读写能力,但是也存在小文件处理、增量更新能力不足的缺点。每次都是和原本的整个数据集做LEFT JOIN,每次都需要耗费几个小时用于更新数据集。

HBase本质上是一个Key-Value存储系统,它的设计并不是为了处理大量小文件,而是为了处理大量的大文件。此外,虽然HBase支持随机写入,但对于大规模的增量更新,特别是在处理大规模数据集的时候,这种更新操作可能需要花费相当长的时间。

特别是,在Uber的场景下,由于其业务的快速增长和对实时性的需求,HBase可能无法满足其所有的需求。这就是为什么Uber开始寻找更好的解决方案,并最终开发了Apache Hudi。


第三代数据仓库——Hudi

Hudi简介

Hudi是一个开源的大数据存储服务,它提供了更高效的增量处理能力,允许快速地更新和插入大数据集,这使得Uber可以更快速地处理数据并提供更实时的服务(通常是分钟级别的实时,而不是秒级的实时。秒级其实Hudi也能实现,但如果算秒的话,资源消耗就太大了)

Uber发现他们需要一个能支持实时和分析混合型工作负载的解决方案。这导致了他们创建Apache Hudi,一个为快速、增量数据管道而构建的分布式数据存储框架。通过使用Apache Hudi,Uber能够以接近实时的速度更新他们的数据仓库,并且提供更快的数据查询性能。其底层的数据集格式是Parquet。


Hudi架构 

  1. 数据流入与集成

    数据首先通过Kafka流入。Kafka是一个分布式流处理平台,它可以实时处理大量的事件数据。当数据事件在源系统中发生时,它们被发送到Kafka中,然后在此处进行缓冲。

  2. 存储与格式

    从Kafka接收的数据被转化并存储为Parquet格式。Parquet是一种列式存储格式,特别适用于分析查询。列式存储可以提供更好的压缩率并提高查询性能。(所以你看,大数据分析中,列式存储是多么常用与重要!)

  3. 实时变更与Hudi

    当新数据进入或现有数据发生变化时,我们不再需要重写整个Parquet文件。这时,Hudi(Apache Hudi)的作用显现出来。Hudi可以快速地将这些变更应用到现有的Parquet文件上,从而确保数据是最新的。Hudi还提供了一种机制,允许用户查询到一个特定时间点的数据版本,这在时间旅行查询或数据回滚中很有用。

  4. Change Log & 原信息

    当数据变更发生时,Hudi通过Change log来记录这些变化。这意味着,即使数据发生了更改,其历史版本的记录仍然可以被检索和访问。

  5. 底层存储

    尽管Hudi和Parquet提供了数据的逻辑视图和格式,但物理数据需要存储在某个地方。在云环境中,数据可以存储在云存储服务中,如Amazon S3或Google Cloud Storage。但在一般的学生项目中,数据直接存储在服务器的HDFS(Hadoop Distributed FileSystem)中,这是一个可扩展和分布式的文件系统,特别设计用于存储大规模数据。

  6. 计算层访问

    一旦数据被处理并存储,上游的计算层(如Spark, Hive或Presto)可以直接读取这些最新的数据,并进行相应的数据分析和处理。


Hudi组件 

总体来说,Hudi底层是支持列式和行式数据存储格式,列式用于优化读操作,行式优化写操作。我们将行式写操作通过compact转化为列式操作,这样就能快速实现查询。如果没有这种区分,就像Delta Lake一样,只有列式数据,我们的写操作就必须将原有的所有parquet数据取出然后再增量添加,这个就是Hudi和其他数据湖的最大的底层差别!

元数据维护数据当时存在的状态!


Hudi表类型 

COW表——写时复制

在新增结果之后,进行写时复制,没有改变的记录值都是从原有的文件中复制过来。这个和Delta Lake一样。

注意下面一行的 Snapshot 快照,一般情况下更改文件记录之后,原有的文件(比如File 0)不会立刻消失,而是作为待处理的文件,用于之后的复制。但是复制过后此时的Snapshot变成新的File0' 1' ,这样就会导致原有的File 0 File1虽然一般还是存在于磁盘中,但是已经无法被读取,File 0'和File 1'作为新的快照用于更新的文件的复制操作。(Incremental就是增量)


MOR表——读时合并 

这个MOR表还蛮有意思的,读时才合并,说明你不用每写一次就合并一次,本质上优化写操作,但是对读操作也有一点影响。从底层来看,就是将所有的更新updates追加到log日志文件中,不会立即更改记录(但是insert/delete确实需要立刻改变原本的File文件,上图中的insert F就能体现)等到最后某一时刻需要读实时信息时,就会将所有的updates与原本的parquet文件合并产生新的文件。虽然在这之前没有产生新的File,但是作者认为它处于时刻准备的阶段,这也就是为什么每次的快照都能同时更新到最新状态。

但是注意,像上面File 2'其实是没有update E'这一个Log的,因为在更改E的同时,F的增加一定会改变File2形成File 2',此时不需要再用Log存储E的改变,直接随着F的增加而更改到文件中也比较方便。

对于最后一行的Read optimized,在没有读操作的时候Read optimized为ABCDE,表示还没有合并当有读操作的时候(最右侧一列),此时读到的文件就是快照,而且完全转化为了列存的格式,就是这个意思。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

莫名其妙el-table不显示问题

完全复制element-ui中table代码,发现表格仍然不显示,看别人都说让降低版本,可我不想降低啊,不然其他组件有可能用不了,后来发现可以通过配置vite.config.js alias: {: path.resolve(__dirname, src),vue: vue/dist/vue…

关于息肉检测和识别项目的总结

前言 整体的思路:首先息肉数据集分为三类: 1.正常细胞 2. 增生性息肉 3. 肿瘤要想完成这个任务,首先重中之重是分割任务,分割结果的好坏, 当分割结果达到一定的准确度后,开始对分割后的结果进行下游分类…

Node.js的基本概念node -v 和npm -v 这两个命令的作用

Node.js 是一个开源且跨平台的 JavaScript 运行时环境,它可以让你在服务器端运行 JavaScript 代码。Node.js 使用了 Chrome 的 V8 JavaScript 引擎来执行代码,非常高效。 在 Node.js 出现之前,JavaScript 通常只在浏览器中运行,用…

谈思生物医疗直播 | 霍德生物研发中心负责人王安欣博士“iPSC衍生神经细胞产品全悬浮自动化工艺及特殊质控方法开发”

iPSC通过人体来源的终端体细胞重编程而来,其衍生细胞产品的生产与质控面临着诸多挑战,但也解决了许多自体细胞治疗的不稳定性和高成本等产业化难点。例如自体细胞不仅供体之间的差异对产品质量可能造成影响,即使同一个供体,体细胞…

SSM培训报名管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 培训报名管理系统是一套完善的信息系统,结合SSM框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主 要采用B/S模式开…

http1,https,http2,http3总结

1.HTTP 当我们浏览网页时,地址栏中使用最多的多是https://开头的url,它与我们所学的http协议有什么区别? http协议又叫超文本传输协议,它是应用层中使用最多的协议, http与我们常说的socket有什么区别吗? …

TSINGSEE青犀省级高速公路视频上云联网方案:全面实现联网化、共享化、智能化

一、需求背景 随着高速铁路的建设及铁路管理的精细化,原有的模拟安防视频监控系统已经不能满足视频监控需求,越来越多站点在建设时已开始规划高清安防视频监控系统。高速公路视频监控资源非常丰富,需要对其进行综合管理与利用。通过构建监控…

Java版 招投标系统简介 招投标系统源码 java招投标系统 招投标系统功能设计

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

【计算机网络】分层模型和应用协议

网络分层模型和应用协议 1. 分层模型 1.1 五层网络模型 网络要解决的问题是:两个程序之间如何交换数据。 四层?五层?七层? 2. 应用层协议 2.1 URL URL(uniform resource locator,统一资源定位符&#…

基于深度学习的人脸表情识别 计算机竞赛

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较…

网络工程综合试题(二)

1. SR技术有哪些缺点? SR(Segment Routing)技术是一种新兴的网络编程技术,它具有很多优点,但也存在一些缺点,包括: 部署复杂性:SR技术需要对网络进行改造和升级,包括更新…

拉扎维模拟CMOS集成电路设计西交张鸿老师课程P6~9视频学习记录

目录 p6 p7 CG放大器 输入阻抗的计算方法; 输出阻抗的计算​编辑​编辑 p8p9 为什么需要差动放大器 噪声 什么是差分信号 基础差动放大器 利用叠加法求解增益; 共模响应 CMRR 带其他类似负载的差动对 ------------------------------------…

Postman测试金蝶云星空Webapi【协同开发云】

文章目录 Postman测试金蝶云星空Webapi【协同开发云】环境说明业务背景大致流程具体操作请求登录接口请求标准接口查看保存提交审核反审核撤销 请求自定义接口参数是字符串参数是实体类单个实体类实体类是集合 其他 Postman测试金蝶云星空Webapi【协同开发云】 环境说明 金蝶…

计算机视觉 激光雷达结合无监督学习进行物体检测的工作原理

一、简述 激光雷达是目前正在改变世界的传感器。它集成在自动驾驶汽车、自主无人机、机器人、卫星、火箭等中。该传感器使用激光束了解世界,并测量激光击中目标返回所需的时间,输出是点云信息,利用这些信息,我们可以从3D点云中查找障碍物。 从自动驾驶汽车的角度看激光雷达…

计算机网络第3章-TCP协议(2)

TCP拥塞控制 TCP拥塞控制的三种方式: 慢启动、拥塞避免、快速恢复 慢启动 当一条TCP连接开始时,cwnd的值是一个很小的MSS值,这使得初始发送速率大约为MSS/RTT。 在慢启动状态,cwnd的值以1个MSS开始并且每当传输的报文段首次被…

thinkphp链接mqtt服务器,然后在订阅下发布消息

cmd打开项目根目录&#xff0c;安装插件&#xff0c;执行下面的命令 composer require php-mqtt/client执行完成之后会在vendor 目录下有php-mqtt 文件 然后在你的 extend文件下 新建mqtt文件 在文件中新建 Mqtt.php 下面是代码 <?php /** S: * Name: 控制器: * Autho…

我用好说 AI 做二次元人设

你有没有想过自己做一部原创作品&#xff1f; 就像开发《星露谷物语》那样&#xff0c;自己把控作品的 角色、故事、载体、宣传 等方方面面&#xff0c;让 idea 不再只是灵光一闪。 以前是 “万事开头难”&#xff0c;可能第一步都举步维艰。但现在有了 AI 就不同了&#xff…

菜单管理中icon图标回显

<el-table-column prop"icon" label"图标" show-overflow-tooltip algin"center"><template v-slot"{ row }"><el-icon :class"row.icon"></el-icon></template></el-table-column>

Java面向对象(进阶)特征之二:继承性

文章目录 一、继承的概述&#xff08;1&#xff09;生活中的继承&#xff08;2&#xff09; Java中的继承1、角度一&#xff1a;从上而下2、角度二&#xff1a;从下而上 &#xff08;3&#xff09;继承的好处&#xff08;4&#xff09;总结 二、继承的语法与应用举例&#xff0…

SpringBoot通过注解形式实现系统操作日志

介绍 我们在日常开发工作中&#xff0c;肯定逃不开与日志接触&#xff0c;一些比较严谨的后台管理系统里面会涉及到一些比较重要的资料&#xff0c;有些公司为了知道有哪些人登录了系统&#xff0c;是谁在什么时候修改了用户信息或者资料&#xff0c;所以就有了操作日志这么个…