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

在大数据存储架构的发展历程中,可以划分为三个显著的演进阶段。首先,随着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这样的数据应用与分析工具提供了更广阔的应用场景和发展空间,为企业在数据驱动决策和创新应用方面提供强大的支持。

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

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

相关文章

解決flask-restful提示Did not attempt to load JSON data 问题

在使用flask-restfull进行API开发的时候。一旦我使用类似下面的代码从url或者form中获得参数就会出现报错:Did not attempt to load JSON data because the request Content-Type was not ‘application/json’。 代码如下: # Flask_RESTFUl数据解析 f…

Python之Scrapy爬虫框架安装及使用详解

声明 文章所涉及的内容仅为学习交流所用。 前言: Scrapy 是用 Python 实现的一个为了采集网站数据、提取结构性数据而编写的应用框架。常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬…

风丘EV能量流测试解决方案 提高电动汽车续航能力

电动汽车(EV)近些年发展迅猛,已被汽车业内普遍认为是未来汽车发展的新方向,但现如今电动汽车仍然存在一些短板,导致其还无法替代传统燃油车。对此,首先想到的肯定就是电动车的续航问题。其实解决电动车续航…

算法沉淀 —— 动态规划篇(路径问题)

算法沉淀 —— 动态规划篇(路径问题) 前言一、不同路径1二、珠宝的最高价值三、下降路径最小和四、地下城游戏 前言 几乎所有的动态规划问题大致可分为以下5个步骤,后续所有问题分析都将基于此 1.、状态表示:通常状态表示分为以下…

心法利器[110] | 知识文档处理和使用流程

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2023年新的文章合集已经发布,获取方式看这里:又添十万字-CS的陋室2023年文章合集来袭,更…

C++的缺省参数,函数重载,引用

目录 1、缺省参数(不能在函数声明和定义中同时出现,若声明和定义是分开的,则缺省参数放在声明里面) 1.1、缺省参数的概念 1.2、全缺省 1.3、半缺省 2、函数重载 2.1、特殊情况 2.2、特殊情况 2.3、为什么C支持函数重载而C语…

四、C语言中的数组:二维数组

四、C语言中的数组:二维数组 本章的学习内容如下: 四、C语言中的数组:数组的创建与初始化 四、C语言中的数组:数组的输入与元素个数 C语言—第6次作业—十道代码题掌握一维数组 四、C语言中的数组:二维数组 我们可以…

学习SpringBoot笔记--知识点(2)

目录 数据访问 基础特性 自定义banner Profiles Profiles组件 Profiles配置文件 外部化配置 单元测试 数据访问 整合SSM场景 SpringBoot 整合 Spring&#xff0c;SpringMVC&#xff0c;MyBatis 进行数据访问场景开发 需要的依赖&#xff1a; <!-- web启动…

遇到了问题,Firepower 2140配置带外IP时报错 commit-buffer failed

onsite we have a cisco firepower 2140 device which run ASA as we try to modify the 2140 OOB mgmt ip by CLI, we got an error why ? 经过查询发现&#xff0c;需要进入ASA里面打上以下这条命令&#xff0c;并重启ASA 1 修改模式并重启 ciscoasa# configure termina…

注册、配置中心-微服务小白入门(2)

Nacos 已经下载安装并且使用了&#xff0c;那么看如何使用&#xff1a; Nacos 注册及配置&#xff0c;以下是一个服务启动后注册到nacos&#xff0c;同时&#xff0c;把该服务的相关配置&#xff0c;写到nacos之中 1、nacos设置 命名空间中&#xff0c;添加对应的服务命名空间…

agent利用知识来做规划:《KnowAgent: Knowledge-Augmented Planning for LLM-Based Agents》笔记

文章目录 简介KnowAgent思路准备知识Action Knowledge的定义Planning Path Generation with Action KnowledgePlanning Path Refinement via Knowledgeable Self-LearningKnowAgent的实验结果 总结参考资料 简介 《KnowAgent: Knowledge-Augmented Planning for LLM-Based Age…

CharacterController.Move called on inactive controller

【问题背景】 Unity3D中开发物体的移动&#xff0c;实现代码如下&#xff1a; public class TargetController : MonoBehaviour {private CharacterController character;private float speedRate 4f;private void Start(){character GetComponent<CharacterController&…

第十二届蓝桥杯JavaB组省赛真题 - 时间显示

解题思路&#xff1a; 数量级较大&#xff0c;需要使用long类型 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);long num scan.nextLong();long allseconds num / 1000;long seconds allse…

ROS机器人入门第四课:话题通信

文章目录 ROS机器人入门第四课&#xff1a;话题通信一、话题通信概述&#xff08;一&#xff09;概念&#xff08;二&#xff09;作用 二、话题通信基本操作需求:分析:流程:&#xff08;一&#xff09;发布方解释一些关键的ROS函数和概念&#xff1a; &#xff08;二&#xff0…

如何使用WordPress插件保护网站的安全

前段时间我们的网站受到了黑客的攻击&#xff0c;网站丢失了一些重要的数据&#xff0c;为了防止这种情况的再次发生&#xff0c;我们准备将网站全部迁移到高防服务器&#xff0c;经过一番对比后&#xff0c;我们选择了Hostease提供的高防服务器。它可以有效地抵御各种类型的网…

网络七层模型:理解网络通信的架构(〇)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

开箱即用的中后台管理模版,建议收藏!

公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ 原文作者&#xff1a;前端充电宝 大家好&#xff0c;我是白特。 今天来推荐几款开箱即用的中后台管理模版&#xff01; Vue Element Admin vue-element-admin 是一个后台前端解决方案&#xff0c;它基于 vue 和 …

WMS仓储管理系统如何优化供应链管理

随着信息技术的快速发展和市场竞争的加剧&#xff0c;优化供应链管理已成为企业提升竞争力的关键。WMS仓储管理系统作为供应链管理的核心工具&#xff0c;其在优化供应链过程中的作用日益凸显。本文将深入探讨WMS仓储管理系统如何优化供应链管理。 首先&#xff0c;WMS仓储管理…

pdfjs 实现给定pdf数据切片高亮并且跳转

pdfjs 实现给定pdf数据切片高亮并且跳转 pdfjs 类的改写基本展示需求的实现高亮功能的实现查询功能分析切片数据处理 pdfjs 类的改写 需求&#xff1a; pdf文件被解析成多个分段&#xff0c;每个分段需要能够展示&#xff0c;并且通过点击分段实现源pdf内容的高亮以及跳转需求…

Oracle数据库入门第三课(函数)

前面二白讲了一些简单的查询语句&#xff0c;仅仅知道查询语句的语法是不够的&#xff0c;要想实现更多的需求&#xff0c;更重要的是函数的使用&#xff0c;这节课我们简单说一下一些函数的使用。 一、函数的分类 什么叫做函数? 函数就是用来实现某种功能的,提前声明好的代…