概述
Lambda架构和Kappa架构都是用于处理大数据的架构模式。
Lambda架构使用了批处理和流处理两种不同的处理方式来处理数据。数据首先通过流处理层进行实时处理,然后再通过批处理层进行离线处理,最后将两种处理结果合并起来得到最终的结果。Lambda架构的优点是可以同时处理实时和历史数据,并且可以保证数据的一致性,但是需要维护两套不同的代码和基础设施。
Kappa架构则只使用流处理来处理数据,将所有数据都视为实时数据进行处理。这样可以简化架构,并且可以实现更低的延迟和更高的吞吐量。但是,Kappa架构无法处理历史数据,也无法保证数据的一致性
区别
主要差异如下:
Lambda架构:
- 三层架构:
- Batch层:离线批处理历史数据
- Serving层:在线服务查询和检索
- Speed层:实时流式处理
- 优点:成熟易实现,能处理历史数据
- 缺点:批流计算需整合,系统复杂
Lambda架构典型的框架和技术主要包括: Batch层:
- Hadoop:批处理计算和存储框架,用于大规模数据离线处理
- Hive:数据仓库工具,用于历史数据的离线分析
- Spark:批处理框架,用于大数据离线计算和处理 Serving层:
- HBase:列式数据库,用于在线查询和检索
- Elasticsearch:搜索和分析引擎,用于在线服务和查询 Speed层:
- Storm:实时流式计算框架,用于实时数据处理
- Spark Streaming:Spark的流式计算组件,用于实时数据计算
- Flink:流批一体的大数据计算框架,既可以做批处理也可以做流处理
- Kafka:消息队列,用于实时数据传输和缓冲 其他:
- Zookeeper:协调服务,用于Lambda架构中各系统的协调
- YARN:资源调度平台,用于资源分配和作业调度 所以,Lambda架构 typical 的技术框架主要是:
- 批处理:Hadoop、Hive、Spark 等
- 在线服务:HBase、Elasticsearch 等
- 流计算:Storm、Spark Streaming、Flink 等
- 消息队列:Kafka
- 资源调度:YARN
- 协调服务:Zookeeper 这些框架和技术的组合实现了Lambda架构的三层架构模式
Kappa架构:
- 全流式处理,无批处理层
- 数据持续产生,流式计算引擎实时计算
- 优点:简单无需整合批流计算,低延迟
- 缺点:对历史数据处理能力较弱
- 典型技术:Kafka、Flink、Storm等
Kappa架构典型的框架和技术主要包括:
- Kafka:消息队列,用于实时数据收集和传输
- Flink:流批一体的计算框架,用于实时数据计算和处理
- Spark Streaming:Spark的流式计算组件,用于实时数据计算
- Storm:实时流式计算框架,用于实时数据处理
- Samza:流式处理框架,基于Kafka和YARN,由LinkedIn开发
- Beam:统一批流处理模型,实现无缝切换,由Apache开源 其他:
- YARN:资源调度平台,用于在Kappa架构中资源的分配和调度
- HDFS:分布式文件系统,用于数据的存储
- Zookeeper:协调服务,用于Kappa架构中各系统的协调 所以,Kappa架构典型的技术框架主要是:
- 流式计算:Flink、Spark Streaming、Storm、Samza、Beam 等
- 消息队列:Kafka
- 资源调度:YARN
- 分布式存储:HDFS
- 协调服务:Zookeeper 这些框架和技术通过流式计算和消息队列实现了Kappa架构的全流式处理模式。 其中,Flink和Spark Streaming作为新一代的流式计算框架,被广泛使用在Kappa架构中。Samza和Beam也具有流计算能力,但使用较少。Storm作为老牌流计算框架,其使用也在逐渐减少。 Kafka作为消息队列,是整个Kappa架构中最为核心的技术,用于收集和传输实时数据流。 所以Kappa架构的关键技术真可以总结为:流计算框架 Kafka
总结
- Lambda架构:批处理 流处理,实时与历史数据结合
- Kappa架构:全流式处理,低延迟实时计算,历史数据处理弱
适用场景:
- 需要历史数据,选择Lambda架构
- 实时性要求高,选择Kappa架构
案例:
- 电商推荐系统:Lambda架构,利用用户历史行为推荐
- 网络攻击检测:Kappa架构,低延迟实时检测异常
小结
面试可能会问到两种架构的优缺点、适用场景以及典型案例。要理解其背后的设计思想和计算模式,而不仅是表象上的区别。 总之,Lambda架构试图结合批处理和流处理的优点,实现对历史数据和实时数据的结合处理。而Kappa架构以流处理为主,实现低延迟的实时计算,但对历史数据的处理相对较弱。