1. 数据湖到底是什么?从“数据仓库”到“数据湖”的思维转变
如果你在大数据领域工作过几年,肯定听过“数据仓库”这个词。它就像一个管理有序的超级市场,数据在入库前已经被清洗、整理、分类,摆放在固定的货架上,方便你快速找到想要的商品(数据报表)。但今天,我想跟你聊聊一个更“野性”也更强大的概念——数据湖。
你可以把数据湖想象成一个巨大的、天然的湖泊。它不挑剔水源,雨水、溪流、河水,甚至是工厂排放的废水(当然,这里指各种原始数据),都可以直接流入湖中。湖水保持着它最原始的状态,未经处理。科学家、探险家(也就是数据科学家和分析师)可以根据不同的研究目的,随时从湖中取水,进行化验、分析或提纯。
这和数据仓库有本质区别。数据仓库是“写入型Schema”,数据在入库前就必须按照预定格式(比如货架标签)整理好。而数据湖是“读取型Schema”,它先把所有原始数据一股脑儿存进来,等你要用的时候,再根据当时的需要去理解和处理它。我刚开始接触时也觉得这有点反直觉:数据不先治理好,用的时候不会一团乱吗?但后来在几个高速发展的业务项目中,我深刻体会到这种“灵活性”的价值。当业务方向每周都在变,新的数据源不断涌现时,花几个月设计一个完美的数据模型再入库,等上线时业务需求早就变了。数据湖的“先存后理”模式,完美适应了这种不确定性。
那么,一个合格的数据湖应该具备哪些核心特征呢?从我十年的实战经验看,它必须满足这几点:保真性(存原始数据,原汁原味)、灵活性(按需定义数据结构)、可管理(能管好海量且杂乱的数据资产)和可追溯(能清晰复现任何一条数据的来龙去脉)。它不仅仅是一个存储池,更是一个集存储、计算、管理、治理于一体的大数据基础设施。
2. 数据湖的核心架构设计:不只是“存储+计算”
很多刚接触的朋友容易把数据湖简单理解为“HDFS或S3上存了一堆原始数据”,这可就大错特错了。一个企业级的数据湖架构,其复杂度和精巧度远超想象。它不是一个单体应用,而是一个由多个核心组件有机组合而成的生态系统。
2.1 分层架构:清晰的数据流动与职责划分
一个健壮的数据湖通常会采用分层架构,这能让数据流动更清晰,管理更高效。虽然具体命名各家公司可能不同,但核心思想大同小异。
- 原始数据层(Raw/Ingestion Layer):这是数据湖的“源头”。所有从业务系统、日志、IoT设备、第三方API来的数据,都以最原始的格式(JSON日志、CSV文件、数据库Binlog、图片、视频等)存放在这里。这一层的关键是只做存储,不做任何清洗和转换,保证数据的保真性。通常使用成本低廉、扩展性极强的对象存储服务(如AWS S3、阿里云OSS、华为云OBS)来承载。
- 标准加工层(Curated/Processed Layer):这一层是数据工程师和科学家们的主战场。原始数据在这里被清洗、转换、关联、聚合,形成结构更清晰、质量更高的数据集。例如,将杂乱的用户点击日志,加工成包含用户ID、行为类型、时间戳、商品ID的规整表。这里会产生大量的中间表和结果表。
- 应用服务层(Serving Layer):加工好的数据需要被消费。这一层根据不同的应用需求,将数据推送到最适合的查询引擎中。比如,需要做实时DashBoard的数据,可以推送到ClickHouse或Doris里;需要做交互式即席分析的,可以推送到Presto或Spark SQL的缓存中;需要服务在线API的,则写入Redis或关系型数据库。存储与计算分离在


638

被折叠的 条评论
为什么被折叠?



