目录
数据湖的发展历程和现状
什么是数据湖
-
数据湖是指一个大型的基于对象的存储库,以数据的原始格式保存数据,并运行不同 类型的分析(可视化、大数据处理、实时分析和机器学习)/以指导做出更好的决策。
-
为什么需要数据湖?
Data science 和 machine learning 进入主流了,需要用原始数据做分析/而数仓的维度模型则通常用于聚合。机器学习用到的数据不光是结构化数据,如图像等非结构化数据无法入仓。
数据湖的产生
-
数据湖概念是 2011 年提出来的,最初数据湖是数据仓库的补充,是为了解决数据仓库 漫长的开发周期,高昂的开发、维护成本,细节数据丢失等问题出现的。
-
数据湖大多是相对于传统数据仓库。2011 年前后,很多数据仓库逐渐迁移到以Hadoop为基础的技术栈上,而且除了结构化数据,半结构化、非结构数据也逐渐地 存储到数据仓库中,并提供此类服务。这样的数据仓库,已经具有了数据湖的部分功能。
-
近年来(2018年前后),随着开源数据湖技术的发展(Delta Lake、Apache Hudi、Apache Iceberg)以及湖仓一体架构(Lakehouse)的提出/数据湖在业界再次引起了极大的轰动,通常被视为解决所有数据问题的一站式解决方案。
还是大数据技术
数据库时代
大数据平台架构逐渐地趋近一个数据库架构
传统数据仓库
- 数据仓库的使用起源于人们使用传统数据库来进行数据洞察 到使用集中的数据仓库来进行数据分析,以用于决策支持和商业智能(BI)。
- 计算和存储耦合在一起,数据增长容易带来大量成本问题。
- Schema在写的时候必须固定,以确保下游Bl的使用。
- 非结构化的数据逐渐增多,例如视频、音频和文本文档,而 这些数据仓库根本无法存储和查询。
- 对ML支持有限。
数仓+数据湖
- 将原始数据导入到更低廉的存储系统中,并提供开放的文件 API。
- Schema在读的时候推导。
- 一部分数据仍然可以通过ETL进入数据仓库,供BI使用。
- 开放的文件API可以使数据直接被多种计算引擎访问,如机器学习系统。
- 两层架构导致持续的ETL,更多的ETL造成故障和延迟,以及一致性问题。
- 两倍的存储成本。
数据湖和数仓的区别
传统数据仓库技术 | 现代数据湖技术 | |
---|---|---|
架构 | 计算存储一体/分离 | 计算存储分离 |
存储 | 统一 | 原生 |
场景 | 报表、BI | 报表、BI、数据科学、机器学习 |
Schema | 固定 | 变化 |
数据质量 | 高 | 低 |
事务 | 不支持 | 支持 |
查询性能 | 高 | 低 |
扩展性 | 低 | 高 |
用户画像 | 商业决策人员 | 商业决策人员、数据科学家 |
成本 | 高 | 低 |
数据湖挑战
入湖
- 数据源种类多,入湖成本高
- 入湖性能差
- 数据质量验证成本高
数据存储
- 数据规模大
- 小文件多,性能变差
- 存储性价比不高
数据分析
- 分析性能差
- 元数据膨胀
安全/治理
- 缺乏安全机制
- 管理成本高
- 数据分布差,倾斜严重
湖仓一体架构
数据湖引发的问题
- 数据沼泽:当越来越多的数据接入到数据湖中,但是却没有有效的方法跟踪这些数据,数据沼泽就发生了在这种失败中,人们把所有东西都放在HDFS中,期望以后可以发掘些什么,可没多久他们就忘了那里有什么。
- 数据泥团:各种各样的新数据接入进数据湖中,它们的组织形式、质量都不一样。 由于缺乏用于检查、清理和重组数据的自助服务工具,使得这些数据很难创造价值。
- 缺乏自助分析工具:由于缺乏好用的自助分析工具,直接对数据湖中的数据分析很困难。一般都是数据工程师或开发人员创建一个整理后的小部分数据集,把这些数据集交付给更广泛的用户,以便他们使用熟悉的工具进行数据分析。这限制了更广泛的人参与到探索大数据中,降低了数据湖的价值。
- 缺乏建模的方法论和工具:在数据湖中,似乎每一项工作都得从头开始,因为以前的项目产生的数据几乎没有办法重用。 其实,我们骂数据仓库很难变化以适应新需求,这其中有个原因就是它花很多时间来对数据进行建模,而正是有了这些建模,使得数据可以共享和重用。数据湖也需要为数据建模,不然每次分析师都得从头开始。
- 缺少数据安全管理:通常的想法是每个人都可以访问所有数据,但这是行不通的。企业对自己的数据是有保护本能的,最终一定是需要数据安全管理的。
- 一个数据湖搞定一切:大家都对能在一个库中存储所有数据的想法很兴奋。然而,数据湖之外总会有新的存储库,很难把它们全都消灭掉。 其实,大多数公司所需的,是可以对多种存储库联合访问功能。是不是在一个地方存储,并不是那么重要。
湖仓一体要解决的问题
- 保持了数据湖灵活性,保持数据快速接入
- 具备数据开发与治理管理的体验
- 实现了统一开发体验
- 数据湖与数据仓库之间的数据实现智能化搬迁
云原生+大数据的时代,湖仓一体更能综合发挥出数据湖的灵活性与生态丰富性,
以及云数据仓库的成长性与企业级能力。
湖仓一体
- Lakehouse仍然存储原始文件,同时支持ETL过程,但是减少ETL的步骤。
- 分析人员可以基于原始数据进行高效的分析查询。
- ML系统可以直接通过Dataframe接口访问Lakehouse数据。
- 直接使用SQL作用于Parquet/ORC的数据集,并保障和数仓一样的性能。
湖仓一体架构的本质
- Lakehouse是一种新的数据管理体系结构,在机器学习覆盖各行各业的时代,它可以从根本上简化企业数据基础架构并加速创新。过去,公司产品或决策中涉及的大多数数据都是来自结构化数据。而如今,许多产品都以计算机视觉和语音模型、文本挖掘等形式集成了AI。
- 为什么要使用Lakehouse而不是数据湖来进行AI?Lakehouse可为您提供数据版本控制、治理、安全性和ACID属性,即使对于非结构化数据也是如此。
- Lakehouse降低了成本,但是它们的性能仍然落后于数据仓库。因此Lakehouse还需要改进其UX以及与流行BI工具的集成来吸引用户。随着技术进步,Lakehouse将缩小这些差距,并且同时保留更简单、更具成本效益和更能服务于各种数据应用程序的核心属性。