什么是数据湖?
这本书很一般,讲的实践、案例太少了,不推荐阅读
但因为数据湖国内讲得很少(但实践非常多),因此简单写一下我的认识
一、什么是数据湖?
用架构图能很快说明白,用阿里的数据架构图来说
- ODS(operational data store, staging area)存储来自各业务系统(生产系统)的原始数据,即为数据湖
- CDM为经过整合、清洗的数据。其中的DWS汇总层,为面向主题的数据仓库(狭义),用于BI报表出数
简单来说,数据湖的定义就是原始数据保存区. 虽然这个概念国内谈的少,但绝大部分互联网公司都已经有了。国内一般把整个HDFS叫做数仓(广义),即存放所有数据的地方
二、为什么要做数据湖?区别在于?
数据湖和数仓,就是原始数据和数仓模型的区别。因为数仓(狭义)中的表,主要是事实表-维度表(下图),主要用于BI、出报表,和原始数据是不一样的
为什么要强调数据湖呢?
真正的原因在于,data science和machine learning进入主流了,需要用原始数据做分析,而数仓的维度模型则通常用于聚合
另一方面,机器学习用到的数据,也不止于结构化数据。用户的评论、图像这些非结构化数据,也都可以应用到机器学习中
2者的区别,也就是AWS这张图(https://aws.amazon.com/cn/big-data/datalakes-and-analytics/what-is-a-data-lake/?nc=sn&loc=2)
但数据湖背后其实还有更大的区别
- 传统数仓的工作方式是集中式的:业务人员给需求到数据团队,数据团队根据要求加工、开发成维度表,供业务团队通过BI报表工具查询
- 数据湖是开放、自助式的(self-service):开放数据给所有人使用,数据团队更多是提供工具、环境供各业务团队使用(不过集中式的维度表建设还是需要的),业务团队进行开发、分析
也就是组织架构和分工的差别 —— 传统企业的数据团队可能被当做IT,整天要求提数,而在新型的互联网/科技团队,数据团队负责提供简单易用的工具,业务部门直接进行数据的使用。人人具备数据分析能力
https://infoq.cn/article/the-development-history-of-big-data-platform-internet-age 中的图比较直观
因此,数据湖最大的意义,在于帮团队做组织架构调整,鼓励所有人了解、分析数据,降低出数类等"IT"型工作。当然,对传统企业而言,也是引入机器学习、用户画像的必须基础设施
三、挑战
从传统集中式的数仓转为开放式的数据湖,并不简单,会碰到许多问题
- 数据发现:如何帮助用户发现数据、了解有哪些数据?
- 数据安全:如果管理数据的权限和安全?因为一些数据是敏感的、或者不应直接开放给所有人的(比如电话号码、地址等)
- 数据管理:多个团队使用数据,如何共享数据成果(比如画像、特征、指标),避免重复开发
这也是目前各大互联网公司都在改进的方向
比如,对于数据发现,目前的解决方案就是Data catalog, 典型的比如IBM Watson catalog (算是对传统元数据管理的改进). 对于机器学习方面的数据管理,可以看Airbnb的机器学习平台Bighead中的实践
四、怎么搭建数据湖?
可参考AWS全家桶,及其新出的data lake formation
https://aws.amazon.com/cn/big-data/datalakes-and-analytics/
Big Data Analytics Architectural Patterns & Best Practices https://www.youtube.com/watch?v=ovPheIbY7U8
Effective Data Lakes: Challenges and Design Patterns: https://www.youtube.com/watch?v=v5lkNHib7bw
Build and Govern Your Data Lakes with AWS Glue: https://www.youtube.com/watch?v=JsNR8uBVSiA
介绍的内容比这本书扎实多了...
Segment的介绍: https://segment.com/blog/cultivating-your-data-lake/
数据湖对我最大的意义,是让我明白了为什么我get不到数仓的点。因为我偏机器学习、偏业务线,更倾向于拿原始数据分析,而不是用加工好的数据看指标
关键词: 数据湖、数据平台、大数据