接前一篇文章:软考 系统架构设计师系列知识点之大数据设计理论与实践(5)
所属章节:
第19章. 大数据架构设计理论与实践
第3节 Lambda架构
本文部分内容参考:
Lambda架构 - 简书
特此致谢!
19.3.3 Lambda架构介绍
在讲解这一节之前要特别说明一下,这一节是去年(2023年11月)即最近一次考试下午的试题。因此,其重要性是不言而喻的。
Lambda是实时处理框架Storm的作者Nathan Marz提出的用于同时处理离线和实时数据的架构理念。Lambda架构(Lambda Architecture)旨在满足一个稳定的大规模数据处理系统所需的容错性、低延迟、可扩展的特性。LA的可行性和必要性基于如下假设和原则:
- 任何数据系统可定义为:query=functional(all data)。
- 人为容错性(Human Fault-Tolerance):数据是易丢失的。
- 数据不可变形(Data Immutability):数据是只读的,不再变化。
- 重新计算(Recomputation):因为上面两个原则,运行函数重新计算结果是可能的。
LA基本框架如图所示:
再如图19-4所示,Lambda架构可分解为三层:批处理层、加速层和服务层。
- 批处理层(Batch Layer)
存储数据集,Batch Layer在数据集上预先计算查询函数,并构建查询所对应的View。Batch Layer可以很好地处理离线数据,但有很多场景数据是不断实时生成且需要实时查询处理的。对于这种情况,Speed Layer更为合适。
- 加速层(Speed Layer)
Batch Layer处理的是全体数据集,而Speed Layer处理的是最近的增量数据流。Speed Layer为了效率,在接收到新的数据后会不断更新Real-time View,而Batch Layer是根据全体离线数据集直接得到Batch View。
- 服务层(Serving Layer)
Serving Layer用于合并Batch View和Real-time View中的结果数据集,得到最终数据集。
Lambda架构具有如下特点:
- 所有数据分别分发到批处理层和实时处理层。
- 批处理层有两个功能:管理主要的数据(该类数据的特点是只能增加,不能更新);为下一步计算出批处理视图做预计算。
- 服务层计算出批处理视图中的数据做索引,以提供低延时,即席查询。
- 实时处理层仅处理实时数据,并为服务层提供查询服务。
- 任何查询都可以通过实时处理层和批处理层的查询结果合并得到。
更多内容请看下回。