Hudi-数据湖

news2024/12/23 8:27:00

数据湖

数据仓库

数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。

数据仓库的特点是本身不生产数据,也不最终消费数据

每个企业根据自己的业务需求可以分成不同的层次。但是最基础的分层思想,理论上分为三个层:操作型数据层(ODS)、数据仓库层(DW)和数据应用层(DA)。

数据湖

数据湖(Data Lake)和数据库、数据仓库一样,都是数据存储设计模式,现在企业的数据仓库都会通过分层的方式将数据存储在文件夹、文件中。数据湖是一个集中式数据存储库,用来存储大量的原始数据,使用平面架构来存储数据。

数据湖的主要思想是对企业中的所有数据进行统一存储,数据湖的就是原始数据保存区,从原始数据(源系统数据的精确副本)转换为用于报告、可视化、分析和机器学习等各种任务的目标数据。数据湖中的数据包括结构化数据(关系数据库数据),半结构化数据(CSV、XML、JSON等),非结构化数据(电子邮件,文档,PDF)和二进制数据(图像、音频、视频),从而形成一个容纳所有形式数据的集中式数据存储。

国内一般把整个HDFS叫做数据仓库(广义),即存放所有数据的地方,而国外一般叫数据湖(data lake)

数据仓库Data Warehouse与数据湖DataLake 区别

  • 数据仓库是一个优化的数据库,用于分析来自事务系统和业务线应用程序的关系数据。
  • 数据湖存储来自业务线应用程序的关系数据,以及来自移动应用程序、IoT 设备和社交媒体的非关系数据。

数据湖并不能替代数据仓库,数据仓库在高效的报表和可视化分析中仍有优势。

  • 数据仓库:使用良好范式规范数据,无法生成数据所需的洞察。
  • 数据湖:新的原始数据存储和处理范式,缺乏结构和治理,会迅速沦为“数据沼泽”。

湖仓一体DataLake House

Data Lakehouse(湖仓一体)是新出现的一种数据架构,它同时吸收了数据仓库和数据湖的优势,数据分析师和数据科学家可以在同一个数据存储中对数据进行操作,同时它也能为公司进行数据治理带来更多的便利性。

LakeHouse使用新的系统设计:直接在用于数据湖的低成本存储上实现与数据仓库中类似的数据结构和数据管理功能

湖仓一体LakeHouse:是一种结合数据湖和数据仓库优势的新范式,从根本上简化企业数据基础架构,并且有望在机器学习已渗透到每个行业的时代加速创新。

数据湖框架

目前市面上流行的三大开源数据湖方案分别为:Delta Lake、Apache Iceberg和Apache Hudi。

  • Delta Lake:DataBricks公司推出的一种数据湖方案,网址:https://delta.io/
  • Apache Iceberg:以类似于SQL的形式高性能的处理大型的开放式表,网址:https://iceberg.apache.org/
  • Apache Hudi:Hadoop Upserts anD Incrementals,管理大型分析数据集在HDFS上的存储,网址:https://hudi.apache.org/

Delta Lake

DeltaLake是一个致力于在数据湖之上构建湖仓一体架构的开源项目。DeltaLake支持ACID事务,可扩展的元数据存储,在现有的数据湖(S3、ADLS、GCS、HDFS)之上实现流批数据处理的统一。

由于出自Databricks,Spark的所有数据写入方式,包括基于dataframe的批式、流式,以及SQL的Insert、Insert Overwrite等都是支持的(开源的SQL写暂不支持,EMR做了支持)。

在数据写入方面,Delta 与 Spark 是强绑定的;在查询方面,开源 Delta 目前支持 Spark 与 Presto,但是,Spark 是不可或缺的,因为 delta log 的处理需要用到 Spark。

Apache Iceberg

Iceberg是一个用于处理海量分析数据集的开放表格式,是专门为对象存储(如S3)而设计的,支持 Spark, Trino, PrestoDB, Flink and Hive等计算引擎,操作Iceberg如SQL table一样。官网:https://iceberg.apache.org/

由 Netflix 开发开源的,其于 2018年11月16日进入 Apache 孵化器,是 Netflix 公司数据仓库基础。

一种可伸缩的表存储格式,允许在一个文件里面修改或者过滤数据,多个文件也支持,内置了许多最佳实践。

在查询方面,Iceberg 支持 Spark、Presto,提供了建表的 API,用户可以使用该 API 指定表明、schema、partition 信息等,然后在 Hive catalog 中完成建表。

Apache Hudi

Apache Hudi(Hadoop Upserts Delete and Incremental)是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服务、数据集群/压缩优化和并发,同时保持数据的开源文件格式。

Apache Hudi不仅非常适合于流工作负载,而且还允许创建高效的增量批处理管道。

Apache Hudi可以轻松地在任何云存储平台上使用。Hudi的高级性能优化,使分析工作负载更快的任何流行的查询引擎,包括Apache Spark、Flink、Presto、Trino、Hive等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TXNGWno-1676288779897)(http://image.codekiller.top/img/Hudi/image-20230112180356519.png)]

强调其主要支持Upserts、Deletes和Incrementa数据处理,支持三种数据写入方式:UPSERT,INSERT 和 BULK_INSERT。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvzLIBtJ-1676288779897)(http://image.codekiller.top/img/Hudi/image-20230112180429202.png)]

功能对比

对比项DeltaLakeApache HudiApache Iceberg
update/deleteYesYesYes
文件合并ManuallyAutomaticManually
历史数据清理AutomaticAutomaticManually
文件格式parquetparquet and avroParquet,avro,orc
计算引擎Hive/Spark/PrestoHive/Spark/Presto/FlinkHive/Spark/Presto/Flink
存储引擎HDFS/S3/AzureHDFS/S3/OBS/ALLUXIO/AzureHDFS/S3
SQL DMLYesYesYes
ACID transactionYesYesYes
TimeLineYesYesYes
索引NoYesNo
可扩展的元数据存储YesYesYes
Schema约束和演化YesYesYes

TimeLine

意思时间线,用于支持时间旅行(Time travel)。即根据用户的提供的时间戳,可以访问到历史某一事件点的数据快照。只要数据快照没有被清理掉,就可以被访问到。

Schema约束和演化

  • Schema约束(Schema Enforcement):是指源和目标表的字段的数据类型需要一致,严格时可要求字段的数量一致。
  • Schema演化(Schema Evolution):是指目标表可以根据源表的Schema变化而相应的变化,如增减字段,字段类型变更。一般不支持改变字段的顺序。

相同点:

  • 都支持update/delete
  • 都支持ACID, 原子性、一致性、隔离性、持久性,避免垃圾数据的产生,保证了数据质量
  • 都能支持主流的高可用存储HDFS、S3
  • 都提供了对Spark的支持,数据的写入都需要一个Spark Job去完成。都是以java package(–jars)方式引入到Spark。
  • 读写都是以java library的方式引入到相关的执行引擎(Spark/Hive/Presto/Flink),不需要启动额外的服务
  • 都可以自行管理元数据,元数据保存在HDFS/S3
  • 都支持Spark/Hive/Presto
  • 都支持TimeLine

不同点:

  • 文件合并,Hudi支持自动合并,DeltaLake和Iceberg支持手动合并(额外定时调度)
  • 数据清理,Hudi和DeltaLake和自动清理过期数据文件; Iceberg支持手动清理(额外定时调度)
  • 文件格式:
    • DeltaLake支持Parquet的文件格式。
    • Hudi数据主要保存在Parquet文件,增量数据以行的方式写入Avro文件,合并操作会把指定时间范围内的Avro文件数据写入Parquet文件。
    • Iceberg 支持Parquet、Avro、ORC。
  • Hudi支持索引
  • Hudi 和 IceBerg支持Flink批流读写

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

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

相关文章

Windows 安装Ubuntu18.04虚拟机

在Windows电脑上安装有VMware虚拟机。 Ubuntu下载 下载地址 https://releases.ubuntu.com/?_ga2.112562948.1436579420.1676293914-109238742.1676124458 笔者这边下载的是Ubuntu 18.04版本。 创建虚拟机 打开VMware,文件>新建虚拟机 选择自定义&#xff0…

shellcode,缓冲区溢出漏洞及 远程调call

1.隐藏堆栈调用 在学习shellcode之前, 我们先利用之前已经学习过的知识来构造一个有意思的调用,当然这是建立在学习完毕我们前面的堆栈课程的前提下. 例如我们正常调用过程如下: main---->func2---->func1---->func0 那么,毫无疑问,在堆栈中会出现3个返回到地址,…

云端智创 | 批量化生产,如何利用Timeline快速合成短视频?

本文内容整理自「智能媒体生产」系列课程第三讲:开发者实战,由阿里云智能视频云技术专家分享云剪辑Timeline的功能及使用方法、云剪辑OpenAPI的使用流程、短视频批量生产的基本原理以及使用Timeline合成常见的短视频效果。课程回放见文末。 01 Timeline…

CSDN每日一练:蛇形矩阵

题目名称:蛇形矩阵 时间限制:1000ms内存限制:256M 题目描述 给你一个整数n,输出n∗n的蛇形矩阵。 输入描述: 输入一行,包含一个整数n 输出描述: 输出n行,每行包含n个正整数&#xff…

【重磅】IEEE33配电网两阶段鲁棒优化调度CCG

目录 1 前言 2基本内容 2.1 配网两阶段鲁棒模型 2.2 求解步骤 3部分程序 4程序结果 5程序链接 1 前言 鲁棒优化是电力系统研究的热点,而两阶段鲁棒和分布鲁棒研究就成为各类期刊(sci/ei/核心)的宠儿,最简单的思路是通过改…

影像组学|案例流程复现

对一篇影像组学的的论文(《Development and validation of an MRI-based radiomics nomogram for distinguishing Warthin’s tumour from pleomorphic adenomas of the parotid gland》)中方法进行复现。完整地跑通影像组学全流程,对临床影像…

Alibaba微服务组件Nacos配置中心

目录 Nacos配置中心使用 springcloud config 对比 快速开始 搭建nacos-config服务 Config相关配置 配置的优先级 RefreshScope Nacos配置中心使用 官方文档: Nacos config alibaba/spring-cloud-alibaba Wiki GitHub Nacos 提供用于存储配置和其他元数据…

链表基本原理

链表基本原理1.链表1.1 基本原理1.2 链表大O记法表示2. 链表操作2.1 读取2.2 查找2.3 插入2.4 删除3.链表代码实现1.链表 1.1 基本原理 节点 组成链表的数据格子不是连续的。可以分布在内存的各个位置。这种不相邻的格子就叫结点。每个结点保存数据还保存着链表里的下一结点的…

Leetcode—移除元素、删除有序数组中的重复项、合并两个有序数组

移除元素 此题简单,用双指针方法即可, 如果右指针指向的元素不等于val,它一定是输出数组的一个元素,我们就将右指针指向的元素复制到左指针位置,然后将左右指针同时右移; 如果右指针指向的元素等于 val&…

04 OpenCV位平面分解

1 基本概念 位平面分解的核心思想是将图像的每一个像素分解为多个二进制位,分别存储在不同的位平面上。例如,如果一个图像是8位深度的,则可以分解为8个位平面,每个位平面上存储一个二进制位。 位平面分解在图像压缩中有着重要的…

对Node.js 的理解?优缺点?应用场景?

一、是什么 Node.js 是一个开源与跨平台的 JavaScript 运行时环境 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能 可以理解为 Node.js 就是一个服务器端的、非阻塞式I/…

中国计算机设计大赛来啦!用飞桨驱动智慧救援机器狗

‍‍中国大学生计算机设计大赛是我国高校面向本科生最早的赛事之一,自2008年开赛至今,一直由教育部高校与计算机相关教指委等或独立或联合主办。大赛的目的是以赛促学、以赛促教、以赛促创,为国家培养德智体美劳全面发展的创新型、复合型、应…

保姆级Vue3+Vite项目实战多布局(下)

写在前面注:本文首发掘金签约专栏,此文为文章同步!本文为 Vue3Vite 项目实战系列教程文章第三篇,系列文章建议从头观看效果更佳,大家可关注专栏防走失!点个赞再看有助于全文完整阅读!此系列文章…

如何在 C++ 应用程序中集成 Spire.XLS for C++

Spire.XLS for C 是一个 Excel 库,供开发人员在任何类型的 C 应用程序中操作 Excel 文档(XLS、XLSX、XLSB 和 XLSM)。 本文演示了如何以两种不同的方式将 Spire.XLS for C 集成到您的 C 应用程序中。 通过 NuGet 安装Spire.XLS for C通过手动…

一篇文章带你读懂HashMap

HashMap是面试中经常问到的一个知识点,也是判断一个候选人基础是否扎实的标准之一。可见HashMap的掌握是多重要。 一、HashMap源码分析 1、构造函数 让我们先从构造函数说起,HashMap有四个构造方法,别慌 1.1 HashMap() // 1.无参构造方法、// 构造一…

企业数字化转型和升级:架构设计方法与实践

企业架构整体结构图例:企业架构整体结构企业架构整体结构从战略层、规划层、落地层这三层来分别对应企业架构中业务、架构和实施的各种重要活动和产出。业务架构,数据架构,应用架构和技术架构之间的内在逻辑联系:图例:企业架构整体…

什么,Excel竟然听得懂人话!?!

Excel知道我们想干啥,不相信?看下面的案例。“数据格式”列中规定了各种数据元类型的长度、保留位数等,我们需要提取对应的数值作为“字段长度”列。比如an..100取100,n4取4,an..100,3取100,..ul取1000&…

C语言学习笔记-排序算法

选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小&…

元宇宙营销面临的三大挑战

元宇宙的营销就像在早期的互联网建立一个网站一样,你没有多少可以向过去借鉴的,这个领域一切都是崭新的。对于一个实验性很强的项目而言,你很难知道要投入多少的时间和资源,而且这个项目也不一定能保障收益以及满足其他的一些关键…

[小记]注入服务进程/跨session注入

最近测试注入遇到一个问题:OpenProcess 失败,报错码:5,没有权限。 问题排查: 1,是否是管理员权限启动程序? 是 2,注入的目标进程有什么特殊? 目标进程是svchost.exe&…