一、数据湖概述:从“存数据”到“用数据”的进化
大家好,我是这次课程的主讲。做了十几年数据架构,我见过太多团队在数据存储上栽跟头。今天咱们先聊聊数据湖——这个听起来很潮、实际上坑也不少的概念。
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 数据湖的核心价值
为什么这几年数据湖这么火?说白了,它解决了几个传统架构解决不了的痛点:
- 低成本海量存储:对象存储的价格大概是SAN的十分之一。我有个客户,把三年历史日志全扔进数据湖,存储成本直接降了80%。
- 数据灵活性:不用提前定义表结构。业务变了?加字段就行,不用改表、不用迁移。
- 多模态支持:文本、图片、视频、传感器数据……一个平台全搞定。
- 存算分离:存储和计算各自独立扩缩容。你想想看,数据量涨了加存储,计算压力大了加计算节点,互不干扰。
- 数据民主化:不同角色都能用自己的工具访问数据——分析师用SQL,科学家用Python,工程师用Spark。
我个人的经验:数据湖最大的价值不是“存”,而是“通”。打通数据孤岛,让不同部门的数据在一个地方汇合。我曾经帮一家零售企业整合了线上订单、线下POS、供应链、客服录音四个系统的数据,最后用数据湖做用户画像,转化率提升了15%。
1.4 数据湖的挑战:光鲜背后的坑
别被上面的好处冲昏了头。数据湖要是没管好,分分钟变成“数据沼泽”。我踩过的坑,今天全抖出来:
- 数据质量堪忧:原始数据直接入库,脏数据、重复数据、格式不一致……你根本不知道里面有什么。
- 元数据管理缺失:没有数据目录,数据湖就是个黑箱。我记得有个项目,团队往S3里丢了2000多个表,半年后没人知道哪个表是干嘛的。
- 性能瓶颈:没有索引、没有分区策略,查一个TB级别的表可能要跑几分钟甚至几小时。
- 安全与权限:数据湖里什么数据都有,敏感信息(PII、财务数据)如果没做好隔离,合规风险极大。
- 数据治理困难:谁上传的?什么时候上传的?数据血缘是什么?没有治理工具,这些问题根本答不上来。
避坑指南:我曾经接手过一个数据湖项目,前任团队把所有数据一股脑儿丢进一个桶里,没有分区、没有目录、没有权限控制。结果审计的时候发现员工薪资数据和公开日志混在一起……嗯,那场面,别提多尴尬了。所以,数据湖一定要从第一天就开始治理。
1.5 数据湖的核心架构:一张图看懂
下面这张图是我自己总结的数据湖核心架构。你看完就能明白数据湖里各个组件是怎么配合的:
你看,数据湖的架构其实不复杂。从数据源到消费,中间经过接入、存储、计算三层。但这里有个关键——左侧的数据治理和元数据管理。没有它,数据湖就是个摆设。
1.6 数据目录:数据湖的“导航地图”
说到元数据管理,就不得不提数据目录。这也是咱们这门课的核心主题。
数据目录是什么?说白了,就是数据湖的“黄页”。它告诉你:
- 数据湖里有哪些数据集?
- 每个数据集是什么格式?
- 数据从哪里来?
- 数据质量怎么样?
- 谁能访问?
我的经验:没有数据目录的数据湖,就像没有目录的图书馆。你明明知道里面有书,就是找不到。我见过太多团队花几百万搭了数据湖,最后没人用——因为根本不知道数据在哪、怎么用。
数据目录的核心能力包括:
- 自动发现:扫描数据湖,自动识别新增的数据集
- 元数据提取:提取Schema、分区信息、文件格式等
- 数据血缘:记录数据从哪里来、经过什么处理、去了哪里
- 搜索与发现:让用户能快速找到需要的数据
- 权限管理:控制谁能看什么数据
嗯,这部分咱们后面会花大量篇幅细讲。今天先有个概念就行。
1.7 小结:数据湖不是终点,而是起点
数据湖解决了“存”的问题,但真正的挑战在“用”。没有好的治理、没有数据目录、没有自助查询能力,数据湖就是个昂贵的垃圾场。
咱们这门课,就是要教你如何用数据目录驱动数据湖,让业务人员能自助查询、让数据科学家能快速探索、让数据工程师能高效治理。说白了,就是让数据湖真正“活”起来。
一句话总结:数据湖是地基,数据目录是地图,自助查询是工具。三者缺一不可。