什么是lambda架构
Lambda架构是一种用于构建大规模数据处理系统的架构模式,它结合了批处理和实时流处理以应对不同种类的数据处理需求。
lambda架构的作用
Lambda架构的目标是允许数据工程师有效地处理大量数据,包括批量数据和实时数据,并提供一致的查询结果。
lambda架构的组成
Lambda架构三层,主要包含如下组件:
1.批处理层(Batch Layer)
批处理层:负责处理离线或批量数据,这一层通常使用分布式计算框架(如Hadoop)来处理大规模数据集。
比如:执行复杂的数据转换、计算和聚合操作。
批处理层生成批量视图(Batch Views)或批处理视图,这些视图是基于批量数据计算得到的结果。
2.实时处理层(Speed Layer)
实时处理层负责:处理实时数据流,这一层通常使用流处理框架,比如:Apache Kafka、Apache Flink,或Apache Stor)来处理数据流。
执行实时计算和聚合操作,实时处理层生成实时视图(Real-time Views)或实时处理视图,这些视图是基于实时数据流计算得到的结果。
3.合并层(Serving Layer)
合并层负责将批处理层和实时处理层生成的视图合并为一致的查询结果。
这一层通常使用分布式存储系统(如HBase或Cassandra)来存储视图,并为用户提供查询接口。
合并层的任务包括数据同步、视图合并和查询处理。
lambda架构优缺点
优点:
- 可伸缩性:Lambda架构允许水平扩展批处理和实时处理层,以处理不断增长的数据量。
- 容错性:Lambda架构具有高度容错性,可以处理硬件故障和其他故障情况。
- 灵活性:它支持不同种类的数据处理需求,包括批处理和实时处理。
- 数据一致性:通过合并层,Lambda架构提供一致的查询结果,无论是批处理视图还是实时视图。
缺点:
- 复杂性:Lambda架构引入了多层次的处理和管理,增加了系统的复杂性和维护成本。
- 延迟:由于数据要经历批处理和实时处理两个阶段,可能会引入一些延迟,特别是在合并数据时。
- 学习曲线:Lambda架构要求开发人员熟悉多个技术栈和组件,因此学习曲线较陡。
lambda架构常用部件
批处理引擎:通常使用Hadoop生态系统中的工具,如Hive、Pig或Spark,用于批处理数据。
实时处理引擎:常用的流处理框架包括Apache Kafka、Apache Flink、Apache Storm等。
存储系统:用于存储批处理和实时处理层生成的视图数据,例如HBase、Cassandra、Elasticsearch等。
合并层:负责将批处理和实时处理层的结果合并为一致的查询结果,通常使用查询引擎和API实现。
Lambda架构总结
Lambda架构是一种强大的数据处理模型,适用于需要同时处理批量和实时数据的大规模数据应用程序。
它允许应对多种数据处理需求,但需要谨慎设计和维护以克服复杂性和延迟。
在某些情况下,Kappa架构(重点关注实时处理),可能是Lambda架构的替代选择。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

后台回复【架构】即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》