BDCC - Lambda VS Kappa

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: BDCC - Lambda VS Kappa

de363e6f522f43f5967f63752042fbe5.jpg

概述


Lambda架构和Kappa架构都是用于处理大数据的架构模式。


Lambda架构使用了批处理和流处理两种不同的处理方式来处理数据。数据首先通过流处理层进行实时处理,然后再通过批处理层进行离线处理,最后将两种处理结果合并起来得到最终的结果。Lambda架构的优点是可以同时处理实时和历史数据,并且可以保证数据的一致性,但是需要维护两套不同的代码和基础设施。


Kappa架构则只使用流处理来处理数据,将所有数据都视为实时数据进行处理。这样可以简化架构,并且可以实现更低的延迟和更高的吞吐量。但是,Kappa架构无法处理历史数据,也无法保证数据的一致性


image.png


区别

主要差异如下:

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架构以流处理为主,实现低延迟的实时计算,但对历史数据的处理相对较弱。


相关文章
|
存储 数据采集 SQL
数仓(Lambda/Kappa)架构
1. 数仓相关概念 2. 数据处理系统OLTP和OLAP 3. OLAP分类 4. 数仓分层(ODS, DWD,DWM,DWS, ADS) 5. 离线数仓架构 6. 实时数仓架构 Lambda和Kappa架构
数仓(Lambda/Kappa)架构
|
消息中间件 SQL 分布式计算
Lambda架构
Lambda架构
337 0
|
分布式计算 算法 Hadoop
|
Serverless Go 云计算
Lambda
Lambda自制脑图
253 0
 Lambda
|
设计模式 缓存 算法
详解 lambda
本文主要从lambda的引入原因,lambda介绍,lamba用法及底层实现原理等几方面详细介绍了lambda的相关知识。
514 0
详解 lambda
|
编译器
[原译]Lambda高手之路第三部分
原文:[原译]Lambda高手之路第三部分 背后的秘密-MSIL 通过著名的LINQPad,我们可以更深入的查看MSIL代码而没有任何秘密。下图是一个LINQPad的使用截图 我们会看三个例子,第一个Lambda表达式如下: Action DoSomethingLambda = (s) => { Console.
990 0
Lambda 的初步认识
Lambda function包,提供lambda接口 public interface Function<T, R> { /** * Applies this function to the given argument.
640 0
|
Python
lambda
lambda 是一个匿名函数,它通常用于简化代码,使代码更简洁、易读。lambda 函数不需要显式地使用 def 关键字进行定义,可以直接在表达式中使用。它的语法如下:
195 6
|
.NET C# 开发框架
[原译]Lambda高手之路第一部分
原文:[原译]Lambda高手之路第一部分 好长时间没发技术文章了,恰好看到一篇非常详细的Lambda文章。一边翻译一边学习。题目好像有点霸气。。 介绍 Lambda表达式是使代码更加动态,易于扩展并且更加快速(看完本文你就知道原因了)的强有力的工具。
741 0

热门文章

最新文章