一、数据湖概述:从“存数据”到“用数据”的进化

大家好,我是这次课程的主讲。做了十几年数据架构,我见过太多团队在数据存储上栽跟头。今天咱们先聊聊数据湖——这个听起来很潮、实际上坑也不少的概念。

1.1 什么是数据湖?

数据湖,说白了就是一个“啥都能存”的大池子。你想想看,传统数据库只收结构化数据,像Excel表格那样规规矩矩的。但现实世界的数据哪有那么听话?

  • 结构化数据:订单表、用户表、交易记录
  • 半结构化数据:JSON日志、XML配置文件、CSV文件
  • 非结构化数据:图片、视频、音频、PDF文档

数据湖的核心思想就一句话:先存起来,以后再说。不用提前设计表结构,不用纠结数据格式,一股脑儿全扔进去。等要用的时候,再按需处理。

我的理解:数据湖不是一种具体的技术产品,而是一种架构理念。它强调“存算分离”和“schema-on-read”(读时定义模式),跟传统数据仓库的“schema-on-write”(写时定义模式)正好相反。

我记得2016年刚接触AWS S3 + Athena那会儿,客户把几百TB的nginx日志直接丢进S3,然后用SQL查。当时我就觉得——嗯,这路子对了。

1.2 数据湖 vs 数据仓库:到底差在哪?

很多新人问我:“数据湖跟数据仓库不都是存数据的吗?”其实差别大了去了。我画了张对比表,你一看就明白:

对比维度 数据仓库 数据湖
数据形态 结构化为主,ETL清洗后入库 原始格式,结构化/半结构化/非结构化全收
模式定义 写时定义(Schema-on-Write) 读时定义(Schema-on-Read)
存储成本 高,通常用SAN/NAS等高性能存储 低,对象存储(S3、OSS、ADLS)为主
计算引擎 专用MPP数据库(Teradata、Redshift、Snowflake) 通用计算框架(Spark、Presto、Flink)
数据质量 高,经过严格ETL校验 低,原始数据可能脏乱差
典型场景 BI报表、固定维度分析 数据探索、机器学习、实时流处理
用户群体 数据分析师、业务人员 数据科学家、数据工程师、高级分析师

一个小建议:别把数据湖和数据仓库对立起来。我现在的项目里,通常是“湖仓一体”——数据湖存原始数据,数据仓库存清洗后的模型数据,各司其职。

1.3 数据湖的核心价值

为什么这几年数据湖这么火?说白了,它解决了几个传统架构解决不了的痛点:

  1. 低成本海量存储:对象存储的价格大概是SAN的十分之一。我有个客户,把三年历史日志全扔进数据湖,存储成本直接降了80%。
  2. 数据灵活性:不用提前定义表结构。业务变了?加字段就行,不用改表、不用迁移。
  3. 多模态支持:文本、图片、视频、传感器数据……一个平台全搞定。
  4. 存算分离:存储和计算各自独立扩缩容。你想想看,数据量涨了加存储,计算压力大了加计算节点,互不干扰。
  5. 数据民主化:不同角色都能用自己的工具访问数据——分析师用SQL,科学家用Python,工程师用Spark。

我个人的经验:数据湖最大的价值不是“存”,而是“通”。打通数据孤岛,让不同部门的数据在一个地方汇合。我曾经帮一家零售企业整合了线上订单、线下POS、供应链、客服录音四个系统的数据,最后用数据湖做用户画像,转化率提升了15%。

1.4 数据湖的挑战:光鲜背后的坑

别被上面的好处冲昏了头。数据湖要是没管好,分分钟变成“数据沼泽”。我踩过的坑,今天全抖出来:

  • 数据质量堪忧:原始数据直接入库,脏数据、重复数据、格式不一致……你根本不知道里面有什么。
  • 元数据管理缺失:没有数据目录,数据湖就是个黑箱。我记得有个项目,团队往S3里丢了2000多个表,半年后没人知道哪个表是干嘛的。
  • 性能瓶颈:没有索引、没有分区策略,查一个TB级别的表可能要跑几分钟甚至几小时。
  • 安全与权限:数据湖里什么数据都有,敏感信息(PII、财务数据)如果没做好隔离,合规风险极大。
  • 数据治理困难:谁上传的?什么时候上传的?数据血缘是什么?没有治理工具,这些问题根本答不上来。

避坑指南:我曾经接手过一个数据湖项目,前任团队把所有数据一股脑儿丢进一个桶里,没有分区、没有目录、没有权限控制。结果审计的时候发现员工薪资数据和公开日志混在一起……嗯,那场面,别提多尴尬了。所以,数据湖一定要从第一天就开始治理。

1.5 数据湖的核心架构:一张图看懂

下面这张图是我自己总结的数据湖核心架构。你看完就能明白数据湖里各个组件是怎么配合的:

数据湖核心架构 数据源层 结构化数据(RDBMS) | 半结构化数据(日志、JSON) | 非结构化数据(图片、视频) 数据接入层 批量导入(Sqoop/DataX) | 实时流(Kafka/Flink) | 手动上传 存储层(对象存储) AWS S3 | 阿里云OSS | Azure ADLS | HDFS 计算与分析层 Spark(批处理) | Presto/Trino(交互式查询) | Flink(流处理) 数据消费层 BI报表(Tableau/Superset) | 数据科学(Jupyter/MLflow) | API服务 数据治理 & 元数据管理 核心要点 存算分离 Schema-on-Read 统一存储

你看,数据湖的架构其实不复杂。从数据源到消费,中间经过接入、存储、计算三层。但这里有个关键——左侧的数据治理和元数据管理。没有它,数据湖就是个摆设。

1.6 数据目录:数据湖的“导航地图”

说到元数据管理,就不得不提数据目录。这也是咱们这门课的核心主题。

数据目录是什么?说白了,就是数据湖的“黄页”。它告诉你:

  • 数据湖里有哪些数据集?
  • 每个数据集是什么格式?
  • 数据从哪里来?
  • 数据质量怎么样?
  • 谁能访问?

我的经验:没有数据目录的数据湖,就像没有目录的图书馆。你明明知道里面有书,就是找不到。我见过太多团队花几百万搭了数据湖,最后没人用——因为根本不知道数据在哪、怎么用。

数据目录的核心能力包括:

  • 自动发现:扫描数据湖,自动识别新增的数据集
  • 元数据提取:提取Schema、分区信息、文件格式等
  • 数据血缘:记录数据从哪里来、经过什么处理、去了哪里
  • 搜索与发现:让用户能快速找到需要的数据
  • 权限管理:控制谁能看什么数据

嗯,这部分咱们后面会花大量篇幅细讲。今天先有个概念就行。

1.7 小结:数据湖不是终点,而是起点

数据湖解决了“存”的问题,但真正的挑战在“用”。没有好的治理、没有数据目录、没有自助查询能力,数据湖就是个昂贵的垃圾场。

咱们这门课,就是要教你如何用数据目录驱动数据湖,让业务人员能自助查询、让数据科学家能快速探索、让数据工程师能高效治理。说白了,就是让数据湖真正“活”起来。

一句话总结:数据湖是地基,数据目录是地图,自助查询是工具。三者缺一不可。