1. 什么是数据湖

数据湖的发展历程和现状

什么是数据湖

  • 数据湖是指一个大型的基于对象的存储库,以数据的原始格式保存数据,并运行不同 类型的分析(可视化、大数据处理、实时分析和机器学习)/以指导做出更好的决策。

  • 为什么需要数据湖?
    Data science 和 machine learning 进入主流了,需要用原始数据做分析/而数仓的维度模型则通常用于聚合。机器学习用到的数据不光是结构化数据,如图像等非结构化数据无法入仓。

数据湖的产生

  • 数据湖概念是 2011 年提出来的,最初数据湖是数据仓库的补充,是为了解决数据仓库 漫长的开发周期,高昂的开发、维护成本,细节数据丢失等问题出现的。

  • 数据湖大多是相对于传统数据仓库。2011 年前后,很多数据仓库逐渐迁移到以Hadoop为基础的技术栈上,而且除了结构化数据,半结构化、非结构数据也逐渐地 存储到数据仓库中,并提供此类服务。这样的数据仓库,已经具有了数据湖的部分功能。

  • 近年来(2018年前后),随着开源数据湖技术的发展(Delta Lake、Apache Hudi、Apache Iceberg)以及湖仓一体架构(Lakehouse)的提出/数据湖在业界再次引起了极大的轰动,通常被视为解决所有数据问题的一站式解决方案。

lakehouse-paper

还是大数据技术
lakehouse-bigdata-tech

数据库时代

大数据平台架构逐渐地趋近一个数据库架构

lakehouse-dt-era

传统数据仓库

  • 数据仓库的使用起源于人们使用传统数据库来进行数据洞察 到使用集中的数据仓库来进行数据分析,以用于决策支持和商业智能(BI)。
  • 计算和存储耦合在一起,数据增长容易带来大量成本问题。
  • Schema在写的时候必须固定,以确保下游Bl的使用。
  • 非结构化的数据逐渐增多,例如视频、音频和文本文档,而 这些数据仓库根本无法存储和查询。
  • 对ML支持有限。

lakehouse-tranditional-dw

数仓+数据湖

  • 将原始数据导入到更低廉的存储系统中,并提供开放的文件 API。
  • Schema在读的时候推导。
  • 一部分数据仍然可以通过ETL进入数据仓库,供BI使用。
  • 开放的文件API可以使数据直接被多种计算引擎访问,如机器学习系统。
  • 两层架构导致持续的ETL,更多的ETL造成故障和延迟,以及一致性问题。
  • 两倍的存储成本。

lakehouse-dw-and-datalake

数据湖和数仓的区别

传统数据仓库技术 现代数据湖技术
架构 计算存储一体/分离 计算存储分离
存储 统一 原生
场景 报表、BI 报表、BI、数据科学、机器学习
Schema 固定 变化
数据质量
事务 不支持 支持
查询性能
扩展性
用户画像 商业决策人员 商业决策人员、数据科学家
成本

数据湖挑战

入湖

  • 数据源种类多,入湖成本高
  • 入湖性能差
  • 数据质量验证成本高

数据存储

  • 数据规模大
  • 小文件多,性能变差
  • 存储性价比不高

数据分析

  • 分析性能差
  • 元数据膨胀

安全/治理

  • 缺乏安全机制
  • 管理成本高
  • 数据分布差,倾斜严重

湖仓一体架构

数据湖引发的问题

  • 数据沼泽:当越来越多的数据接入到数据湖中,但是却没有有效的方法跟踪这些数据,数据沼泽就发生了在这种失败中,人们把所有东西都放在HDFS中,期望以后可以发掘些什么,可没多久他们就忘了那里有什么。
  • 数据泥团:各种各样的新数据接入进数据湖中,它们的组织形式、质量都不一样。 由于缺乏用于检查、清理和重组数据的自助服务工具,使得这些数据很难创造价值。
  • 缺乏自助分析工具:由于缺乏好用的自助分析工具,直接对数据湖中的数据分析很困难。一般都是数据工程师或开发人员创建一个整理后的小部分数据集,把这些数据集交付给更广泛的用户,以便他们使用熟悉的工具进行数据分析。这限制了更广泛的人参与到探索大数据中,降低了数据湖的价值。
  • 缺乏建模的方法论和工具:在数据湖中,似乎每一项工作都得从头开始,因为以前的项目产生的数据几乎没有办法重用。 其实,我们骂数据仓库很难变化以适应新需求,这其中有个原因就是它花很多时间来对数据进行建模,而正是有了这些建模,使得数据可以共享和重用。数据湖也需要为数据建模,不然每次分析师都得从头开始。
  • 缺少数据安全管理:通常的想法是每个人都可以访问所有数据,但这是行不通的。企业对自己的数据是有保护本能的,最终一定是需要数据安全管理的。
  • 一个数据湖搞定一切:大家都对能在一个库中存储所有数据的想法很兴奋。然而,数据湖之外总会有新的存储库,很难把它们全都消灭掉。 其实,大多数公司所需的,是可以对多种存储库联合访问功能。是不是在一个地方存储,并不是那么重要。

湖仓一体要解决的问题

  • 保持了数据湖灵活性,保持数据快速接入
  • 具备数据开发与治理管理的体验
  • 实现了统一开发体验
  • 数据湖与数据仓库之间的数据实现智能化搬迁

lakehouse-problem-to-solve
云原生+大数据的时代,湖仓一体更能综合发挥出数据湖的灵活性与生态丰富性,
以及云数据仓库的成长性与企业级能力。

湖仓一体

  • Lakehouse仍然存储原始文件,同时支持ETL过程,但是减少ETL的步骤。
  • 分析人员可以基于原始数据进行高效的分析查询。
  • ML系统可以直接通过Dataframe接口访问Lakehouse数据。
  • 直接使用SQL作用于Parquet/ORC的数据集,并保障和数仓一样的性能。

lakehouse-lake-house-in-one

湖仓一体架构的本质

  • Lakehouse是一种新的数据管理体系结构,在机器学习覆盖各行各业的时代,它可以从根本上简化企业数据基础架构并加速创新。过去,公司产品或决策中涉及的大多数数据都是来自结构化数据。而如今,许多产品都以计算机视觉和语音模型、文本挖掘等形式集成了AI。
  • 为什么要使用Lakehouse而不是数据湖来进行AI?Lakehouse可为您提供数据版本控制、治理、安全性和ACID属性,即使对于非结构化数据也是如此。
  • Lakehouse降低了成本,但是它们的性能仍然落后于数据仓库。因此Lakehouse还需要改进其UX以及与流行BI工具的集成来吸引用户。随着技术进步,Lakehouse将缩小这些差距,并且同时保留更简单、更具成本效益和更能服务于各种数据应用程序的核心属性。