接前一篇文章:软考 系统架构设计师系列知识点之大数据设计理论与实践(9)
所属章节:
第19章. 大数据架构设计理论与实践
第3节 Lambda架构
19.3.5 Lambda架构优缺点
1. 优点
(1)容错性好
Lambda架构为大数据系统提供了更友好的容错能力。一旦发生错误,可以修复算法或从头开始重新计算视图。
(2)查询灵活度高
批处理层允许针对任何数据进行临时查询。
(3)易伸缩
所有的批处理层、加速层和服务层都很容易扩展。因为它们都是完全分布式的系统,可以通过增加新机器来轻松地扩大规模。
(4)易扩展
添加视图是容易的,只是给主数据集添加几个新的函数。
总体概括:
既有实时又有离线,对于数据分析场景涵盖得非常到位。
2. 缺点
(1)全场景覆盖带来的编码开销。
(2)针对具体场景重新离线训练一遍益处不大。
(3)重新部署和迁移成本很高。
总体概括:
离线层和实时流虽然面临的场景不同,但是其内部的处理逻辑却是相同的,因此有大量冗余和重复的模块存在。
以下引用大数据架构之– Lambda架构「建议收藏」-腾讯云开发者社区-腾讯云
给出更为详细的Lambda架构优缺点:
1. 优点
- 职责边界清晰
Speed Layer处理数据为最近的增量数据流,Batch Layer处理的是全体数据集。Speed Layer为了效率,接收到新数据时不断更新Realtime View,而Batch Layer根据全体离线数据集直接得到Batch View。Speed Layer是一种增量计算,而非重新计算(recomputation)。
- 容错性
Speed Layer中处理的数据也不断写入Batch Layer,当Batch Layer中重新计算的数据集包含Speed Layer处理的数据集后,当前的Realtime View就可以丢弃,这意味着Speed Layer处理中引入的错误,在Batch Layer重新计算时都可以得到修正。这点也可以看成是CAP理论中的最终一致性(Eventual Consistency)的体现。
- 复杂性隔离
Batch Layer处理的是离线数据,可以很好地掌控。Speed Layer采用增量算法处理实时数据,复杂性比Batch Layer要高很多。通过分开Batch Layer和Speed Layer,把复杂性隔离到Speed Layer,可以很好的提高整个系统的鲁棒性和可靠性。
2. 缺点
- 实时与批量计算结果不一致引起的数据口径问题
因为批量和实时计算走的是两个计算框架和计算程序,算出的结果往往不同,经常看到一个数字当天看是一个数据,第二天看昨天的数据反而发生了变化。
- 批量计算在计算窗口内无法完成
在IOT时代,数据量级越来越大,经常发现夜间只有4、5个小时的时间窗口,已经无法完成白天20多个小时累计的数据,保证早上上班前准时出数据已成为每个大数据团队头疼的问题。
- 开发和维护的复杂性问题
Lambda 架构需要在两个不同的 API(application programming interface,应用程序编程接口)中对同样的业务逻辑进行两次编程:一次为批量计算的ETL系统,一次为流式计算的Streaming系统。针对同一个业务问题产生了两个代码库,各有不同的漏洞。这种系统实际上非常难维护
- 服务器存储大
数据仓库的典型设计,会产生大量的中间结果表,造成数据急速膨胀,加大服务器存储压力。
至此,“19.3.5 Lambda架构优缺点”的全部内容就讲解完了。更多内容请看下回。