
【作者主页】Francek Chen
【专栏介绍】⌈ ⌈ ⌈大数据技术原理与应用 ⌋ ⌋ ⌋专栏系统介绍大数据的相关知识,分为大数据基础篇、大数据存储与管理篇、大数据处理与分析篇、大数据应用篇。内容包含大数据概述、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数据库HBase、NoSQL数据库、云数据库、MapReduce、Hadoop再探讨、数据仓库Hive、Spark、流计算、Flink、图计算、数据可视化,以及大数据在互联网领域、生物医学领域的应用和大数据的其他应用。
【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/BigData_principle_application。
文章目录
一、数据湖的概念
企业在持续发展,企业的数据也不断堆积。虽然"含金量"最高的数据都存在数据库和数据仓库里,支撑着企业的运转。企业希望把生产经营中的所有相关数据,历史的、实时的,在线的、离线的,内部的、外部的,结构化的、非结构化的,都能完整保存下来,方便"沙中淘金"。

图1 企业希望完整保存生产经营中的所有相关数据
数据库和数据仓库都不具备这个功能,怎么办呢?于是,数据湖脱颖而出。数据湖是一类存储数据自然、原始格式的系统或存储,通常是对象块或者文件。数据湖通常是企业中全量数据的单一存储。全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换数据,各类任务包括报表、可视化、高级分析和机器学习等。数据湖中包括来自于关系数据库中的结构化数据(行和列)、半结构化数据(如 CSV、日志、XML、JSON 等)、非结构化数据(如 E-mail、文档、PDF 等)和二进制数据(如图像、音频、视频等)。数据湖可以构建在企业本地数据中心,也可以构建在云上。
数据湖的本质,是由"数据存储架构+数据处理工具"组成的解决方案,而不是某个单一独立产品。
数据存储架构要有足够的扩展性和可靠性,要满足企业能把所有原始数据都"囤"起来,存得下、存得久。一般来讲,各大云厂商都喜欢用对象存储来做数据湖的存储底座,比如 Amazon Web Services(亚马逊云科技),修建"湖底"用的"砖头",就是 S3 云对象存储。
数据处理工具则分为两大类。第一类工具解决的问题是如何把数据"搬到"湖里,包括定义数据源、制定数据访问策略、制定安全策略、移动数据、编制数据目录等。如果没有这些数据管理/治理工具,元数据缺失,湖里的数据质量就没法保障,"泥石俱下",各种数据倾泻堆积到湖里,最终好好的数据湖,慢慢就变成了"数据沼泽"。因此,在一个数据湖方案里,数据移动和管理的工具非常重要。比如,Amazon Web Services 提供"Lake Formation"这个工具(如图2所示),帮助客户自动化地把各种数据源中的数据移动到湖里,同时还可以调用Amazon Glue来对数据进行ETL,编制数据目录,进一步提高湖里数据的质量。

图2 Lake Formation
第二类工具,就是要从湖里的海量数据中"淘金"。数据并不是存进数据湖里就万事大吉,要对数据进行分析、挖掘、利用,比如要对湖里的数据进行查询。同时要把数据提供给机器学习、数据科学类的业务,便于"点石成金"。数据湖可以通过多种引擎对湖上数据进行分析计算,例如离线分析、实时分析、交互式分析、机器学习等多种数据分析场景。
二、数据湖与数据仓库的区别
表1 数据湖与数据仓库的区别
| 特性 | 数据库 | 数据仓库 |
|---|---|---|
| 存放什么数据 | 结构化数据,抽取自事务系统、运营数据库和业务应用系统 | 所有类型的数据,结构化、半结构化和非结构化 |
| 数据模式(Schema) | 通常在数仓实施之前设计,但也可以在数据分析时编写 | 在分析时编写 |
| 性价比 | 起步成本高,使用本地存储以获得最快查询结果 | 起步成本低,计算存储分离 |
| 数据质量如何 | 可作为重要事实依据的数据 | 包含原始数据在内的任何数据 |
| 最适合谁用 | 业务分析师为主 | 数据科学家、数据开发人员为主 |
| 具体能做什么 | 批处理报告、BI、可视化分析 | 机器学习、探索性分析、数据发现、流处理、大数据与特征分析 |
三、数据湖能解决的企业问题
在企业实际应用中,数据湖能解决的问题包括以下几个方面:
- 数据分散,存储散乱,形成数据孤岛,无法联合数据发现更多价值。
- 存储成本问题。
- SQL 无法满足的分析需求。
- 存储、计算扩展性不足。
- 业务模型不定,无法预先建模。
小结
数据湖是企业全量数据的原始存储系统,能容纳结构化、半结构化和非结构化数据,弥补了数据库和数据仓库仅处理结构化数据的局限。其本质是"存储架构+处理工具"的组合方案,存储层依托对象存储实现高扩展、低成本的海量数据囤积,工具层负责数据入湖管理(源接入、安全、编目)和湖内分析(离线/实时查询、机器学习等)。与数据仓库相比,数据湖 schema-on-read(分析时建模),更适合数据科学家探索未知模式,但需强治理避免沦为"数据沼泽"。它能有效解决数据孤岛、存储成本高、扩展性差、无法预先建模等企业痛点,支撑从BI报表到AI建模的多元场景。
欢迎 点赞👍 | 收藏⭐ | 评论✍ | 关注🤗
