2w字详解数据湖:概念、特征、架构与案例

什么是数据湖(Data Lake) ,以及什么是湖仓一体(Lakehouse) By 远方时光原创,可转载,open转山转水转佛塔 只为途中与你相见(班公湖 16年新藏线摄)大概从2021年数据湖这个概念开始火了起来,我们今天来聊聊为什么需要用数据湖。冰川融水形成小溪,溪水从山间倾泻而下,汇聚成一片宁静的湖面。企业的数据也是一样,我们不希望各个组织的数据分散到不同地方,而是集中储存和管理。数据要能存,而不是一江春水向东流。要足够大,大数据太大,一池存不下。企业的数据要有边界,可以流通和交换,但更注重隐私和安全,“海到无边天作岸”,可不行。数据库。 阅读详情

最近,数据湖的概念非常热,许多前线的同学都在讨论数据湖应该怎么建? 有没有成熟的数据湖解决方案? 各大厂商的数据湖解决方案到底有没有实际落地的案例? 怎么理解数据湖? 数据湖和大数据平台有什么不同? 带着这些问题,我们尝试写了这样一篇文章,希望能抛砖引玉,引起大家一些思考和共鸣。

本文共有以下7个章节:

  1. 什么是数据湖

  2. 数据湖的基本特征

  3. 数据湖基本架构

  4. 各厂商的数据湖解决方案

  5. 典型的数据湖应用场景

  6. 数据湖建设的基本过程

  7. 总结

一、什么是数据湖

数据湖是目前比较热的一个概念,许多企业都在构建或者计划构建自己的数据湖。但是在计划构建数据湖之前,搞清楚什么是数据湖,明确一个数据湖项目的基本组成,进而设计数据湖的基本架构,对于数据湖的构建至关重要。关于什么是数据湖,有如下定义。

Wikipedia是这样定义的:

数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件。数据湖通常是企业中全量数据的单一存储。全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,各类任务包括报表、可视化、高级分析和机器学习。数据湖中包括来自于关系型数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如email、文档、PDF等)和二进制数据(如图像、音频、视频)。数据沼泽是一种退化的、缺乏管理的数据湖,数据沼泽对于用户来说要么是不可访问的要么就是无法提供足够的价值。

AWS的定义相对就简洁一点:

数据湖是一个集中式存储库,允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。

微软的定义就更加模糊了,并没有明确给出什么是Data Lake,而是取巧的将数据湖的功能作为定义:

Azure的数据湖包括一切使得开发者、数据科学家、分析师能更简单的存储、处理数据的能力,这些能力使得用户可以存储任意规模、任意类型、任意产生速度的数据,并且可以跨平台、跨语言的做所有类型的分析和处理。数据湖在能帮助用户加速应用数据的同时,消除了数据采集和存储的复杂性,同时也能支持批处理、流式计算、交互式分析等。数据湖能同现有的数据管理和治理的IT投资一起工作,保证数据的一致、可管理和安全。它也能同现有的业务数据库和数据仓库无缝集成,帮助扩展现有的数据应用。Azure数据湖吸取了大量企业级用户的经验,并且在微软一些业务中支持了大规模处理和分析场景,包括Office 365, Xbox Live, Azure, Windows, Bing和Skype。Azure解决了许多效率和可扩展性的挑战,作为一类服务使得用户可以最大化数据资产的价值来满足当前和未来需求。


关于数据湖的定义其实很多,但是基本上都围绕着以下几个特性展开。

  1. 数据湖需要提供足够用的数据存储能力,这个存储保存了一个企业/组织中的所有数据。

  2. 数据湖可以存储海量的任意类型的数据,包括结构化、半结构化和非结构化数据。

  3. 数据湖中的数据是原始数据,是业务数据的完整副本。数据湖中的数据保持了他们在业务系统中原来的样子。

  4. 数据湖需要具备完善的数据管理能力(完善的元数据),可以管理各类数据相关的要素,包括数据源、数据格式、连接信息、数据schema、权限管理等。

  5. 数据湖需要具备多样化的分析能力,包括但不限于批处理、流式计算、交互式分析以及机器学习;同时,还需要提供一定的任务调度和管理能力。

  6. 数据湖需要具备完善的数据生命周期管理能力。不光需要存储原始数据,还需要能够保存各类分析处理的中间结果,并完整的记录数据的分析处理过程,能帮助用户完整详细追溯任意一条数据的产生过程。

  7. 数据湖需要具备完善的数据获取和数据发布能力。数据湖需要能支撑各种各样的数据源,并能从相关的数据源中获取全量/增量数据;然后规范存储。数据湖能将数据分析处理的结果推送到合适的存储引擎中,满足不同的应用访问需求。

  8. 对于大数据的支持,包括超大规模存储以及可扩展的大规模数据处理能力。

综上,个人认为数据湖应该是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施;以数据为导向,实现任意来源、任意速度、任意规模、任意类型数据的全量获取、全量存储、多模式处理与全生命周期管理;并通过与各类外部异构数据源的交互集成,支持各类企业级应用。

图1. 数据湖基本能力示意

这里需要再特别指出两点:

  1. 可扩展是指规模的可扩展和能力的可扩展,即数据湖不但要能够随着数据量的增大,提供“足够”的存储和计算能力;还需要根据需要不断提供新的数据处理模式,例如可能一开始业务只需要批处理能力,但随着业务的发展,可能需要交互式的即席分析能力;又随着业务的实效性要求不断提升,可能需要支持实时分析和机器学习等丰富的能力。

  2. 以数据为导向,是指数据湖对于用户来说要足够的简单、易用,帮助用户从复杂的IT基础设施运维工作中解脱出来,关注业务、关注模型、关注算法、关注数据。数据湖面向的是数据科学家、分析师。目前来看,云原生应该是构建数据湖的一种比较理想的构建方式,后面在“数据湖基本架构”一节会详细论述这一观点。

二、数据湖的基本特征

对数据湖的概念有了基本的认知之后,我们需要进一步明确数据湖需要具备哪些基本特征,特别是与大数据平台或者传统数据仓库相比,数据湖具有哪些特点。在具体分析之前,我们先看一张来自AWS官网的对比表格

上表对比了数据湖与传统数仓的区别,个人觉得可以从数据和计算两个层面进一步分析数据湖应该具备哪些特征。在数据方面:

  • “保真性”。数据湖中对于业务系统中的数据都会存储一份“一模一样”的完整拷贝。与数据仓库不同的地方在于,数据湖中必须要保存一份原始数据,无论是数据格式、数据模式、数据内容都不应该被修改。在这方面,数据湖强调的是对于业务数据“原汁原味”的保存。同时,数据湖应该能够存储任意类型/格式的数据。

  • “灵活性”:上表一个点是 “写入型schema” v.s.“读取型schema”,其实本质上来讲是数据schema的设计发生在哪个阶段的问题。对于任何数据应用来说,其实schema的设计都是必不可少的,即使是mongoDB等一些强调“无模式”的数据库,其最佳实践里依然建议记录尽量采用相同/相似的结构。“写入型schema”背后隐含的逻辑是数据在写入之前,就需要根据业务的访问方式确定数据的schema,然后按照既定schema,完成数据导入,带来的好处是数据与业务的良好适配;但是这也意味着数仓的前期拥有成本会比较高,特别是当业务模式不清晰、业务还处于探索阶段时,数仓的灵活性不够。数据湖强调的“读取型schema”,背后的潜在逻辑则是认为业务的不确定性是常态:我们无法预期业务的变化,那么我们就保持一定的灵活性,将设计去延后,让整个基础设施具备使数据“按需”贴合业务的能力。因此,个人认为“保真性”和“灵活性”是一脉相承的:既然没办法预估业务的变化,那么索性保持数据最为原始的状态,一旦需要时,可以根据需求对数据进行加工处理。因此,数据湖更加适合创新型企业、业务高速变化发展的企业。同时,数据湖的用户也相应的要求更高,数据科学家、业务分析师(配合一定的可视化工具)是数据湖的目标客户。

  • “可管理”:数据湖应该提供完善的数据管理能力。既然数据要求“保真性”和“灵活性”,那么至少数据湖中会存在两类数据:原始数据和处理后的数据。数据湖中的数据会不断的积累、演化。因此,对于数据管理能力也会要求很高,至少应该包含以下数据管理能力:数据源、数据连接、数据格式、数据schema(库/表/列/行)。同时,数据湖是单个企业/组织中统一的数据存放场所,因此,还需要具有一定的权限管理能力。

  • “可追溯”:数据湖是一个组织/企业中全量数据的存储场所,需要对数据的全生命周期进行管理,包括数据的定义、接入、存储、处理、分析、应用的全过程。一个强大的数据湖实现,需要能做到对其间的任意一条数据的接入、存储、处理、消费过程是可追溯的,能够清楚的重现数据完整的产生过程和流动过程。

在计算方面,个人认为数据湖对于计算能力要求其实非常广泛,完全取决于业务对于计算的要求。

  • 丰富的计算引擎。从批处理、流式计算、交互式分析到机器学习,各类计算引擎都属于数据湖应该囊括的范畴。一般情况下,数据的加载、转换、处理会使用批处理计算引擎;需要实时计算的部分,会使用流式计算引擎;对于一些探索式的分析场景,可能又需要引入交互式分析引擎。随着大数据技术与人工智能技术的结合越来越紧密,各类机器学习/深度学习算法也被不断引入,例如TensorFlow/PyTorch框架已经支持从HDFS/S3/OSS上读取样本数据进行训练。因此,对于一个合格的数据湖项目而言,计算引擎的可扩展/可插拔,应该是一类基础能力。

  • 多模态的存储引擎。理论上,数据湖本身应该内置多模态的存储引擎,以满足不同的应用对于数据访问需求(综合考虑响应时间/并发/访问频次/成本等因素)。但是,在实际的使用过程中,数据湖中的数据通常并不会被高频次的访问,而且相关的应用也多在进行探索式的数据应用,为了达到可接受的性价比,数据湖建设通常会选择相对便宜的存储引擎(如S3/OSS/HDFS/OBS),并且在需要时与外置存储引擎协同工作,满足多样化的应用需求。

 三、数据湖基本架构

数据湖可以认为是新一代的大数据基础设施。为了更好的理解数据湖的基本架构,我们先来看看大数据基础设施架构的演进过程。

1) 第一阶段:以Hadoop为代表的离线数据处理基础设施。如下图所示,Hadoop是以HDFS为核心存储,以MapReduce(简称MR)为基本计算模型的批量数据处理基础设施。围绕HDFS和MR,产生了一系列的组件,不断完善整个大数据平台的数据处理能力,例如面向在线KV操作的HBase、面向SQL的HIVE、面向工作流的PIG等。同时,随着大家对于批处理的性能要求越来越高,新的计算模型不断被提出,产生了Tez、Spark、Presto等计算引擎,MR模型也逐渐进化成DAG模型。

DAG模型一方面,增加计算模型的抽象并发能力:对每一个计算过程进行分解,根据计算过程中的聚合操作点对任务进行逻辑切分,任务被切分成一个个的stage,每个stage都可以有一个或者多个Task组成,Task是可以并发执行的,从而提升整个计算过程的并行能力;另一方面,为减少数据处理过程中的中间结果写文件操作,Spark、Presto等计算引擎尽量使用计算节点的内存对数据进行缓存,从而提高整个数据过程的效率和系统吞吐能力。

图2. Hadoop体系结构示意

2) 第二阶段:lambda架构。随着数据处理能力和处理需求的不断变化,越来越多的用户发现,批处理模式无论如何提升性能,也无法满足一些实时性要求高的处理场景,流式计算引擎应运而生,例如Storm、Spark Streaming、Flink等。

然而,随着越来越多的应用上线,大家发现,其实批处理和流计算配合使用,才能满足大部分应用需求;而对于用户而言,其实他们并不关心底层的计算模型是什么,用户希望无论是批处理还是流计算,都能基于统一的数据模型来返回处理结果,于是Lambda架构被提出,如下图所示。

图3. Lambda架构示意

Lambda架构的核

数据平台发展史-从数据仓库数据湖到数据湖仓 回顾数据平台发展历史,梳理数据平台变迁脉络,更全面准确地理解数据仓库数据湖和数据湖仓! 阅读详情

相关推荐

AI架构师必读:智能采购系统架构设计模式

智能采购系统的核心是用数据驱动的AI能力解决“需求与供给的动态匹配问题”,其架构设计需平衡业务复杂性、技术扩展性与决策可靠性。本文从采购的本质出发,结合AI架构师的全栈视角,拆解智能采购系统的概念基础、理论框架、架构设计模式、实现机制,并通过真实案例说明如何将“技术选型”与“业务价值”绑定。无论是需求预测的LSTM模型优化,还是供应商选择的多目标规划,抑或是与ERP/SRM系统的集成策略,本文都提供了可落地的设计逻辑与避坑指南,最终指向一个核心结论:智能采购的架构优势,本质是“用AI重构采购决策的因果链”

大数据洞察的博客 1255

数据湖(一):数据湖概念

数据湖概念 一、什么是数据湖 数据湖是一个集中式的存储库,允许你以任意规模存储多个来源、所有结构化和非结构化数据,可以按照原样存储数据,无需对数据进行结构化处理,并运行不同类型的分析对数据进行加工,例如:大数据处理、实时分析、机器学习,以指导做出更好地决策。 二、​​​​​​​大数据为什么需要数据湖 当前基于Hive的离线数据仓库已经非常成熟,在传统的离线数据仓库中对记录级别的数据进行更新是非常麻烦的,需要对待更新的数据所属的整个分区,甚至是整个表进行全面覆盖才行,由于离线数仓多级逐层加工的架构

Lansonli(蓝深李)的博客 9365

从零开始搭建一个数据湖架构

随着互联网数据量的增加、海量数据的产生和价值的释放,以及云计算、大数据、人工智能等新兴技术的广泛应用,数据湖(data lake)架构成为企业数据分析领域的热点话题之一。本文将从数据湖架构的定义、特点及结构三个方面对数据湖的基本概念、术语进行介绍。然后,将通过多个具体案例向读者展示如何利用开源工具构建一个数据湖。最后,我们将讨论未来的发展方向以及展望。数据湖,英文名Data Lake,即基于云端的数据仓库。

AI天才研究院 1088

利用Python实现FGO自动战斗脚本

Fate/Grand Order(非的肝不过欧的)作为索尼为了拯救自己不倒闭而开发的面向月厨的骗氪养成抽卡爆肝游戏,居然没有像隔壁《阴阳师》的自动战斗系统(看看别人现在都自带脚本了)。毕竟是懒得肝,就不妨写一个脚本来肝算了,省时省力。 开始 一个战斗脚本,其实可以算是AI的初步了。虽然只是暴力算出造成最大伤害的方案orz。 我们在这里不考虑释放 技能 、 宝具 和 暴击星 这三样非常重要的东西。...

web开发与Python 5485

特征金字塔网络(Feature Pyramid Network, FPN)

特征金字塔网络(FPN)是计算机视觉领域的一个里程碑式工作,通过高效的多尺度特征融合,显著提升了目标检测和分割任务的性能。其核心在于自底向上路径、自顶向下路径和横向连接的协同工作,兼顾了高分辨率和强语义信息。FPN的通用性和高效性使其成为许多现代检测框架的标配模块。

Rhett_Butler0922的博客 1724

QST QMC5883L —— 经典磁传感器的生存指南与替代预案

本文聚焦于QST旗下经典三轴磁力计 QMC5883L,解析其技术渊源、核心特性及当前面临的停产风险。结合真实应用场景提供续命方案与选型建议,为依赖该芯片的开发团队争取过渡时间窗口期。文章包含实测数据对比、生命周期管理策略及潜在替代方案拆解。存续价值判断✔️ 现有产品设计无需大幅改动即可延续生命;❌ 新项目采用将面临更高的维护成本;⚠️ 建议在6个月内完成技术路线切换。#磁传感器 #嵌入式开发 #供应链管理 #QST #QMC5883L。

2501_93066786的博客 997

benders分解算法 逻辑思路整理(加星)

一般我们经常可以看到的是经典的benders,此处我也结合经典的benders梳理下思路。

sinat_41348401的博客 7981

遗传算法优化光学超表面:智能设计突破纳米结构瓶颈

光学超表面设计本质上是一个高维、非线性、离散每个结构单元(如纳米砖柱、孔洞、十字架)有多个参数(长、宽、高、旋转角、材料),整个阵列的参数组合数量随单元数指数级增长。性能指标(如聚焦效率、工作带宽、偏振转换率、特定角度响应)往往无法用简单解析式表达,需依赖计算密集型电磁仿真(如FDTD, FDFD, RCWA)来评估。结构参数微小变化可能引起光学响应的剧烈跃变,目标函数存在多个局部最优解。实际制造通常要求结构参数取自有限的离散值(如特定刻蚀深度、材料库)。

weixin_51101456的博客 1139

【AI智能体】Dify 搭建数据分析应用实战操作详解

Dify 搭建数据分析应用实战详解

congge 7287

[Python] -项目实战10- 用 Python 自动化批量重命名文件

本文介绍了使用Python实现文件批量重命名的技术方法。主要内容包括:1)使用os和pathlib模块进行基础文件操作;2)提供多种实用脚本示例,如添加序号、替换字符、添加时间戳等;3)进阶功能包括用户输入和错误处理;4)GUI工具实现方案;5)常见问题与优化建议。文章详细讲解了从简单到复杂的批量重命名实现方法,帮助读者快速掌握这一提高工作效率的技能。建议开发者注意路径处理、错误管理等细节,确保脚本稳健运行。

每日出拳老爷子的博客 815

华为OD机试双机位C卷-MVP争夺战 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【MVP争夺战】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - MVP争夺战,

qq_45776114的博客 1169

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: Java 的七种垃圾收集器
下一篇: 要不你给我说说什么是长轮询吧?
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值