数据湖与湖仓一体是如何演变而来的?详谈大数据存储架构的变迁

news/2024/5/15 1:51:48/文章来源:https://blog.csdn.net/yuanziok/article/details/137054312

在大数据存储架构的发展历程中,可以划分为三个显著的演进阶段。首先,随着Hadoop和Hive等初期项目的出现,数据仓库(Data Warehouse)的概念得以确立;随着数据仓库的不断演化,同时有了云与对象存储的诞生;大数据与 AI 的时代到来之后,数据湖(Data Lake)这个概念就被凸显了出来。

近几年,出现了一个新的存储概念,或者是说到了一个新的阶段,叫做湖仓一体(Lakehouse)。传统数仓大家都比较了解,今天这篇文章,我们会着重看一下后面这两个阶段,也就是数据湖和湖仓一体。

bd7496a6015a42a223468ec5e02d68f5.jpeg大数据存储架构的变迁

一、为什么要有「数据湖」?

数据湖的出现主要是为了解决数据烟囱(Data Silos)的问题。数据烟囱的形成主要源于不同的业务或团队由于历史原因导致数据隔离,无法进行有效连接。随着企业内部业务的增加,数据格式日益多样化,除了传统的结构化数据,还涉及大量的半结构化和非结构化数据。这些数据也需要被纳入企业的数据管理和运维体系中。传统的数据仓库架构难以满足这种多样化的数据存储需求。

其次,分散的数据管理也是数据烟囱问题的一个关联因素。由于数据分布在不同的位置,数据管理和权限控制变得分散,对于不同业务和团队进行管理需要大量的工作量。

再者,存储与计算的耦合(存算耦合)是另一个问题。这主要与传统的Hadoop架构,如HDFS和YARN,的设计理念有关。然而,对于基于公有云的现代大数据架构来说,这种存算耦合的设计显得缺乏弹性,无论是在运维弹性还是成本控制方面。

最后,随着人工智能(AI)行业的迅速发展,特别是在机器学习和深度学习领域,数据湖需要为基于这些技术的业务提供更好的支持。除了数据存储外,还需要与深度学习框架进行对接,提供如POSIX等更适合算法工程师的接口,而不仅仅是传统的SQL或其他方式。

帆软数仓搭建解决方案>>>
https://s.fanruan.com/5iyug


二、什么是「数据湖」?

这里引用维基百科上的一句简介:

A data lake is a system or repository of data stored in its natural/raw format, usually objectblobs or files.

翻译一下:

数据湖是一个存储系统或数据仓库,其中的数据以其自然的或原始的格式存储,通常以对象、块或文件的形式存在。

38b81d972e82bea71d88dba7ce037007.jpeg

数据湖与传统数据仓库最大的区别在于数据存储的方式。数据湖更倾向于将数据以其原始格式存储,而不进行预处理或转换。要构建一个有效的数据湖,关键在于选择一种既经济实惠又能支持海量数据的底层存储解决方案。目前,云上的对象存储技术似乎是一个理想的选择,它不仅成本低廉和可靠,还能够处理大规模的数据存储需求。然而,对象存储也并非完美无缺,接下来将对其进行详细比较和分析。

简洁地说,数据湖的核心理念是「 Everything in one place」,即所有数据都首先存储在数据湖中。无论是进行数据仓库构建还是进行后续的ETL处理,都可以在后续阶段进行。这里的“后置ETL”指的是ETL过程仍然存在,但它被转变为一个后续处理步骤。由于采用了对象存储和存算分离的架构,数据湖的整体设计也更符合云原生的理念。

三、为什么要有「湖仓一体」?

在数据湖架构中,尽管数据仓库仍然存在,但由于其在数据处理流程中的后置位置,可能导致数据处理的滞后。特别是对于如 Hive 这类传统组件,要实现近实时或基于 Hive 的增量数据更新相对复杂,尤其是在缩短分区(partition)时间窗口的情况下。

此外,尽管数据湖已经存在,但与机器学习和深度学习的集成仍然面临挑战。在湖仓一体的阶段,需要解决如何更好地支持深度学习等先进技术的问题。

数据重复拷贝和重复ETL也是一个关键问题。由于ETL和数据仓库都被放置在数据处理流程的后端,可能导致数据从数据湖同步或复制到数据仓库,进而产生数据的重复拷贝或重复ETL,这可能会造成数据质量问题和不必要的资源浪费。

最后,基于对象存储这样的存储解决方案,需要提供更多的高级特性支持,例如ACID事务、多版本数据索引和零拷贝克隆等。这些特性对于确保数据一致性、提高数据查询效率和减少数据存储成本都是非常重要的。

四、什么是「湖仓一体」?

湖仓一体的设计理念包括几个关键因素。首先,它需要采用一个统一开放的底层文件格式,例如Parquet、ORC等,这些都是业界广泛认可的高效存储格式。这种统一的文件格式有助于确保数据的高效存储和查询。

其次,湖仓一体还需要一个开放的存储层,这包括如Delta Lake、Iceberg、Hudi等开源组件。这些组件提供了额外的数据管理功能,如事务支持、版本控制等,使数据湖更加健壮和可靠。

第三,湖仓一体需要与多种计算引擎进行集成。无论是Spark、Presto还是其他商业计算引擎,都应该能够无缝地与湖仓一体的存储层结合,为用户提供多样化的计算和查询选项。

最后,湖仓一体还需要与深度学习框架进行紧密集成。以Uber开源的Petastorm项目为例,Petastorm为TensorFlow、PyTorch等深度学习框架提供了Parquet格式的读写支持。这种集成能力使得深度学习任务可以直接从数据湖中读取数据,极大地提高了数据处理的效率和灵活性。

总体而言,湖仓一体的目标是构建一个集统一文件格式、开放存储层、多样化计算引擎和深度学习框架于一体的,用于数据处理和分析的大数据平台,以满足现代大数据应用的多样化需求。

3b9aeae315a894044c1ae50409007e93.jpeg

五、结语

在大数据领域的持续发展中,数据存储和处理架构也经历了从数据仓库到数据湖,再到湖仓一体的演进。湖仓一体旨在通过统一的开放文件格式、灵活的存储层、多样的计算引擎集成以及与深度学习框架的紧密结合,构建一个更加高效、灵活和功能丰富的数据处理和分析平台。对于上层的数据应用与分析工具FineBI而言,湖仓一体架构提供了一个更加完善和集成的数据管理解决方案,使FineBI能够更加高效地连接、查询和分析数据,为企业用户提供更加强大和灵活的数据分析能力。

湖仓一体的出现不仅弥补了数据湖架构中的不足,还为企业提供了一个更加完整和集成的数据管理解决方案。未来,随着大数据和机器学习技术的进一步发展,湖仓一体架构有望成为企业数据管理的主流模式,同时为FineBI这样的数据应用与分析工具提供了更广阔的应用场景和发展空间,为企业在数据驱动决策和创新应用方面提供强大的支持。

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

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

相关文章

UE4_旋转节点总结二——实现盯着某物或者看向相同方向功能

如何利用旋转等蓝图节点完成Actor与Actor看向相同的方向或者一个Actor看向另一个Actor的方法。 一、蓝图节点SetActorRotation 效果: 效果 二、GetActorUpVector 测试: 角色向上的向量为负Z轴,正好是角色的头上面方向。 测试: 角…

动态规划刷题(算法竞赛、蓝桥杯)--守望者的逃离(线性DP)

1、题目链接&#xff1a;[NOIP2007 普及组] 守望者的逃离 - 洛谷 #include <bits/stdc.h> using namespace std; int main(){int m,s,t;cin>>m>>s>>t;int s1,s20;//s1跑,s2闪 for(int i1;i<t;i){//枚举时间,s1s2同时进行 s117;if(m>10){s260;m-1…

DARTS-PT: RETHINKING ARCHITECTURE SELECTION IN DIFFERENTIABLE NAS

Rethinking Architecture Selection in Differentiable NAS 论文链接&#xff1a;https://arxiv.org/abs/2108.04392v1 项目链接&#xff1a;https://github.com/ruocwang/darts-pt ABSTRACT 可微架构搜索(Differentiable Neural Architecture Search, NAS)是目前最流行的网…

上位机图像处理和嵌入式模块部署(qmacvisual非opencv算法编写)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们都知道&#xff0c;qmacvisual本身依赖于qtopencv的实现。大部分的界面都是依赖于qt的实现。图像算法部分&#xff0c;也是大部分都依赖于open…

【threejs】较大物体或shape的贴图较小问题处理方法

问题 有的场景内相对体型差距过大的物体&#xff08;如山地 海洋等&#xff09;由于尺寸问题&#xff0c;加载贴图过于小&#xff0c;同时shader也无法完全展示&#xff0c;如图 我们可以获取物体的uv&#xff0c;进行缩放使得贴图可以完全展开 如果uv是乱的 可以用xyz坐标最…

C语言例4-4:putchar()函数的调用格式和使用的例子

代码如下&#xff1a; //putchar()函数的调用格式和使用的例子 #include<stdio.h> //编译预处理命令&#xff0c;即文件包含命令 int main(void) {char ch1N, ch2E, ch3W;putchar(ch1);putchar(ch2);putchar(ch3); //输出变量c1、c2和c3中的字符putchar(\n);putcha…

Vue——案例01(查询用户)

一、案例实现页面 二、案例实现效果 1. 查询效果 2. 年龄升序 3. 年龄降序 4. 原顺序 三、案例实现思路 1. 定义界面所需标签样式 <div id"app"><h2>查询用户:</h2><input type"text" placeholder"请输入名字"/><b…

竞赛 python+大数据校园卡数据分析

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&am…

浪潮信息AIStation与潞晨科技Colossal-AI 完成兼容性认证!

为进一步提升大模型开发效率&#xff0c;近年来&#xff0c;浪潮信息持续加强行业合作&#xff0c;携手业内头部&#xff0c;全面进攻大模型领域。日前&#xff0c;浪潮信息AIStation智能业务创新生产平台与潞晨科技Colossal-AI大模型开发工具完成兼容性互认证。后续&#xff0…

Istio 部署 Spring Coud 微服务应用

Istio 服务部署 这篇文章讲述如何将 Java Spring Cloud 微服务应用部署到 Istio mesh 中。 准备基础环境 使用 Kind 模拟 kubernetes 环境。文章参考&#xff1a;https://blog.csdn.net/qq_52397471/article/details/135715485 在 kubernetes cluster 中安装 Istio 创建一…

【Roadmap to learn LLM】Large Language Models in Five Formulas

by Alexander Rush Our hope: reasoning about LLMs Our Issue 文章目录 Perpexity(Generation)Attention(Memory)GEMM(Efficiency)用矩阵乘法说明GPU的工作原理 Chinchilla(Scaling)RASP(Reasoning)结论参考资料 the five formulas perpexity —— generationattention —— m…

前端web移动端学习day04

移动 Web 第四天 01-vw适配方案 vw和vh基本使用 vw和vh是相对单位&#xff0c;相对视口尺寸计算结果&#xff0c;相对于屏幕的逻辑参数 vw&#xff1a;viewport width&#xff08;1vw 1/100视口宽度 &#xff09;vh&#xff1a;lviewport height ( 1vh 1/100视口高度 ) …

二叉树:递归算法的理解和运用

上一期中&#xff0c;我们了解到了堆&#xff0c;堆的结构也可以叫做二叉树的顺序结构&#xff0c;今天我们一起来看看二叉树的链式结构&#xff0c;我们还要学习有关于二叉树递归的书写。 首先&#xff0c;这是一个二叉树&#xff0c;但是对于普通的二叉树来说&#xff0c;增…

蓝桥备赛——堆队列

AC code import os import sys import heapq a [] b [] n,k map(int,input().split())for _ in range(n):x,y map(int,input().split())a.append(x)b.append(y) q []# 第一种情况&#xff1a;不打第n个怪兽# 将前n-1个第一次所需能量加入堆 for i in range(n-1):heapq.h…

Selenium 自动化 —— 浏览器窗口操作

更多内容请关注我的专栏&#xff1a; 入门和 Hello World 实例使用WebDriverManager自动下载驱动Selenium IDE录制、回放、导出Java源码 当用 Selenium 打开浏览器后&#xff0c;我们就可以通过 Selenium 对浏览器做各种操作&#xff0c;就像我们日常用鼠标和键盘操作浏览器一…

c++初阶篇----string的底层模拟

string类的模拟 目录 string类的模拟功能介绍各功能的实现类的构造函数&#xff0c;拷贝构造函数&#xff0c;析构函数迭代器的实现string的内部容量访问成员函数string的修改成员函数string类的相关联函数string类的输入输出友元 汇总string功能的实现汇总测试代码 功能介绍 …

151 shell编程,正则表达式,在C语言中如何使用正则表达式

零&#xff0c;坑点记录&#xff1a;bash 和 dash 的区别&#xff0c;导致的坑点 查看当前用的shell 是啥&#xff0c;用的是/bin/bash hunandedehunandede-virtual-machine:~$ echo $SHELL /bin/bash 当shell 脚本运行的时候&#xff08;后面会学到方法&#xff0c;这里是最…

Django屏蔽Server响应头信息

一、背景 最近我们被安全部门的漏洞扫描工具扫出了一个服务端口的漏洞。这个服务本身是一个Django启动的web服务&#xff0c;并且除了登录页面&#xff0c;其它页面或者接口都需要进行登录授权才能进行访问。 漏洞扫描信息和提示修复信息如下: 自然这些漏洞如何修复&#xff0c…

图论- 最小生成树

一、最小生成树-prim算法 1.1 最小生成树概念 一幅图可以有很多不同的生成树&#xff0c;比如下面这幅图&#xff0c;红色的边就组成了两棵不同的生成树&#xff1a; 对于加权图&#xff0c;每条边都有权重&#xff08;用最小生成树算法的现实场景中&#xff0c;图的边权重…

每天五分钟深度学习:使用神经网络完成人脸的特征点检测

本文重点 我们上一节课程中学习了如何利用神经网络对图片中的对象进行定位,也就是通过输出四个参数值bx、by、bℎ和bw给出图片中对象的边界框。 本节课程我们学习特征点的检测,神经网络可以通过输出图片中对象的特征点的(x,y)坐标来实现对目标特征的识别,我们看几个例子。…