在介绍Lambda和Kappa架构之前,我们先回顾一下数据仓库的发展历程: 传送门-数据仓库发展历程
咳,随着数据量的暴增和数据实时性要求越来越高,以及大数据技术的发展驱动企业不断升级迭代,数据仓库架构方面也在不断演进,分别经历了以下过程:早期经典数仓架构 > 离线大数据架构 > Lambda > Kappa > 混合架构。
架构 | 组成 | 特点 |
---|---|---|
经典数仓架构 | 关系型数据库(mysql、oracle)为主 | 数据量小,实时性要求低 |
离线大数据架构 | hive,spark为主 | 数据量大,实时性要求低 |
Lambda | hive,spark负责存量,strom/Flink负责实时计算 | 数据量大,实时性要求高 |
Kappa | kafka、strom、Flink | 多业务,多数据源,事件型数据源 |
混合架构 |
ps.表中举例若有不当,欢迎指正
Lambda架构的核心思想是把大数据系统拆分成三层:Batch Layer,Speed Layer和Serving Layer。其中,Batch Layer负责数据集存储以及全量数据集的预查询。Speed Layer主要负责对增量数据进行计算,生成Realtime Views。Serving Layer用于响应用户的查询请求,它将Batch Views和Realtime Views的结果进行合并,得到最后的结果,返回给用户,如下图
Lambda架构解决了大数据量下实时计算的问题,但架构本身也存在一定缺点。
Kappa架构的核心思想包括以下三点:
在Kappa架构下,只有在有必要的时候才会对历史数据进行重复计算,并且实时计算和批处理过程使用的是同一份代码。
项目 | Lambda | Kappa |
---|---|---|
数据处理能力 | 可以处理超大规模的历史数据 | 历史数据处理的能力有限 |
机器开销 | 批处理和实时计算需一直运行,机器开销大 | 必要时进行全量计算,机器开销相对较小 |
存储开销 | 只需要保存一份查询结果,存储开销较小 | 需要存储新老实例结果,存储开销相对较大 |
开发、测试难度 | 实现两套代码,开发、测试难度较大 | 只需面对一个框架,开发、测试难度相对较小 |
运维成本 | 维护两套系统,运维成本大 | 只需维护一个框架,运维成本小 |
目前很多准实时增量批处理方案也能满足实时性需求,从稳定性和运维成本上也表现更佳。 比如kudu(存储)+impala(计算)准实时方案,可以实现千万级数据的增量更新和olap查询,性能优异。
数仓系列传送门:https://blog.csdn.net/weixin_39032019/category_8871528.html