【大数据架构(3)】Lambda vs. Kappa Architecture-选择你需要的架构

文章目录

  • 一. Data Processing Architectures
    • 1. Lambda Architecture
      • 1.1. 架构说明
        • a. Data Ingestion Layer
        • b. Batch Layer (Batch processing)
        • c. Speed Layer (Real-Time Data Processing)
        • d. Serving Layer
      • 1.2. Lambda Architecture的优缺点
      • 1.3. 使用案例
    • 2. Kappa Architecture
      • 2.1. Kappa Architecture特点
        • Speed Layer (Stream Layer)
      • 2.2. 优缺点
      • 2.3. 使用场景
        • a. 大量实时场景
        • b. 实时数仓
  • 二. Comparison of Lambda and Kappa Architectures
    • 1. Data Processing Systems
    • 2. Data Storage
    • 3. Complexity
  • 三. The Importance of Choosing the Right Data Processing Architecture for a Business

比较总览

  • Lambda architecture uses separate batch and stream processing systems, making it scalable and fault-tolerant but complex to set up and maintain (as it duplicates processing logic).
  • Kappa architecture simplifies the pipeline with a single stream processing system as it treats all data as streams, providing flexibility and ease of maintenance, but requires experience in stream processing and distributed systems.

Lambda architecture is well-suited when companies have mixed requirements for stream and batch processing, e.g., for real-time analytics and multiple batch processing tasks or data lakes, while Kappa architecture is ideal for continuous data pipelines, real-time data processing, and IoT systems.

一. Data Processing Architectures

数据处理架构被设计为处理数据摄入、处理、以及存储大数据量。这使得组织可以从数据中分析、抽取出有价值的洞察,这帮助他们提高决策,优化操作以及驱动生长。

如下有lamba和kappa架构,都可用于处理不同类型的数据。企业需要考虑他们的数据处理需求,以便找到合适的架构来实现他们的目标和需求。

 

1. Lambda Architecture

1.1. 架构说明

lambda架构提供了一个用于处理大数据的可拓展、容错和灵活的系统,这是Nathan Marz在2011提出的,主要用于解决处理实时需求。

lamba架构使用两个处理系统来处理实时和离线任务。离线系统处理批数据,并存储在例如数据仓库,或分布式文件系统中。实时系统用于处理实时数据,并存储在分布式数据层。

在这里插入图片描述

 

lamba架构中,有四层,用于处理和存储大数据,如下:

a. Data Ingestion Layer

这层用于收集和存储数据,比如log日志,传感器、消息队列和API等。数据通常是实时摄取的,并同时被送入批处理层和速度层。

 

b. Batch Layer (Batch processing)

批处理层用于处理大数据并存储到数据仓库、或分布式文件系统中。此层可以使用hadoop或spark来处理数据。批处理层用于处理大数据,并提供所有数据的完整视图。

 

c. Speed Layer (Real-Time Data Processing)

速度层用于处理实时数据,并存储到例如消息队列或者NoSQL数据库中。此层可以使用FLink或storm。流数据层用于处理大数据流,并提供最新的数据视图。

d. Serving Layer

服务层是 Lambda 架构的一个组件,负责实时向用户提供查询结果。通常作为批处理层和流处理层之上的一层实现。它通过查询层访问,该层允许用户使用查询语言(例如 SQL 或 Apache Hive 的 HiveQL)查询数据。

服务层旨在提供快速可靠的访问查询结果的能力,无论数据是从批处理还是流处理层访问。它通常使用分布式数据存储,如 NoSQL 数据库或分布式缓存,来存储查询结果并实时向用户提供。

服务层是 Lambda 架构的重要组成部分,因为它允许用户以一致的方式访问数据,而不受底层数据处理架构的影响。它还在支持实时应用程序方面发挥着关键作用,例如需要快速访问最新数据的仪表板和分析应用程序。

 

1.2. Lambda Architecture的优缺点

优点:

  • 可伸缩性:Lambda 架构被设计用于处理大量数据,并且可以水平扩展,以满足业务的需求。
  • 容错性:Lambda 架构被设计为容错性强,具有多个层和系统共同工作,以确保数据可靠地处理和存储。
  • 灵活性:Lambda 架构灵活,可以处理各种数据处理工作负载,从历史批处理到流式架构。

 

缺点:

  • 复杂性:
    Lambda架构是一个复杂的系统,使用多个层和系统来处理和存储数据。对于不熟悉分布式系统和数据处理框架的企业来说,建立和维护它可能具有挑战性。尽管其层被设计用于不同的流水线,但底层逻辑存在重复部分,这会给程序员带来不必要的编码开销。

  • 错误和数据不一致性:
    由于不同工作流程的实现被复制了两次(尽管遵循相同的逻辑,实现方式不同),您可能会遇到批处理和流处理引擎产生不同结果的问题。这很难发现,很难调试。

  • 架构锁定:
    重新组织或迁移存储在 Lambda 架构中的现有数据可能非常困难。

 

1.3. 使用案例

Lambda 架构是一种适用于各种数据处理工作负载的数据处理架构。

  • 它特别适用于处理大量数据并提供低延迟的查询结果,因此非常适用于实时分析应用程序,如仪表板和报告。
  • Lambda 架构还非常适用于批处理任务,例如数据清洗、转换和聚合,以及流处理任务,例如事件处理、机器学习模型、异常检测和欺诈检测。
  • 此外,Lambda 架构通常用于构建数据湖,这是集中存储结构化和非结构化静态数据的存储库,并且非常适合处理物联网设备生成的高容量数据流。

 

2. Kappa Architecture

2.1. Kappa Architecture特点

Kappa 架构是一种数据处理架构,旨在为实时处理大量数据提供可伸缩、容错和灵活的系统。它作为 Lambda 架构的一种替代方案而开发,Lambda 架构使用两个独立的数据处理系统来处理不同类型的数据处理工作负载。

In contrast to Lambda, Kappa architecture uses a single data processing system to handle both batch processing and stream processing workloads, as it treats everything as streams. This allows it to provide a more streamlined and simplified data processing pipeline while still providing fast and reliable access to query results.

与 Lambda 不同,Kappa 架构使用单一的数据处理系统来处理批处理和流处理工作负载,因为它将所有内容都视为流。这使其能够提供更简化、更流畅的数据处理管道,同时仍然能够快速可靠地访问查询结果。

在这里插入图片描述

 

Speed Layer (Stream Layer)

在 Kappa 架构中,只有一个主要层:流处理层。该层负责收集、处理和存储实时流数据。

您可以将其视为 Lambda 方法的演进,去除了批处理系统。通常使用流处理引擎实现,如 Apache Flink、Apache Storm、Apache Kinesis、Apache Kafka(或许多其他流处理框架),旨在处理高容量的数据流并快速可靠地提供。

在 Kappa 架构中,流处理层分为两个主要组件:摄取组件和处理组件。

  • 摄取组件:
    该组件负责收集传入数据并存储来自各种来源的原始数据,例如日志文件、传感器和 API。数据通常是实时摄取的,并存储在分布式数据存储中,如消息队列或 NoSQL 数据库中。

  • 处理组件:
    该组件负责在数据到达时进行处理,并将结果存储在分布式数据存储中。通常使用流处理引擎实现,例如 Apache Flink 或 Apache Storm,并设计用于处理高容量数据流并快速可靠地提供对查询结果的访问。在 Kappa 架构中,没有单独的服务层。相反,流处理层负责实时向用户提供查询结果。

在这里插入图片描述

 

2.2. 优缺点

优点:

  1. 简洁和流畅的流水线:
    Kappa 架构使用单一的数据处理系统来处理批处理和流处理工作负载,相较于 Lambda架构,这使得其建立和维护更为简单。通过减少编码开销,这可以使数据处理流水线更容易管理和优化。

  2. 支持对历史数据进行高吞吐量的大数据处理:
    尽管可能感觉 Kappa 架构并非专为这类问题设计,但它能够优雅地支持这些用例,允许直接从流处理作业进行数据重新处理。

  3. 迁移和重组的便利性:
    由于只有一个流处理流水线,可以通过从规范数据存储中创建新数据流(比如flink任务进行集群数据迁移ing)来执行迁移和重组。

  4. 分层存储:

  • 分层存储是一种根据数据的访问模式和性能需求将数据存储在不同存储层中的方法。分层存储的思想是通过将不同类型的数据存储在最合适的存储层上,优化存储成本和性能。
  • 例如,企业可能选择将历史数据存储在更低成本、容错性强的分布式存储层,如对象存储中,同时将实时数据存储在性能更高的存储层,如分布式缓存或 NoSQL 数据库中。分层存储使 Kappa 架构成为一种具有成本效益和弹性的数据处理技术,无需传统数据湖(ing)。

缺点:

  • 复杂性:
    尽管 Kappa 架构比 Lambda更简单,但对于那些不熟悉流处理框架的企业来说,建立和维护仍然可能很复杂(回顾流处理中的常见挑战)。

  • 高昂的基础设施费用和可伸缩性问题(当设置不当时):
    在事件流平台中存储大数据可能成本高昂。为了使其更具成本效益,可以使用云提供商的数据湖方法(如 AWS S3 或 GCP Google Cloud Storage)。另一种常见的大数据架构方法是使用 Apache Kafka 作为流层构建“流式数据湖”,(ing)并使用对象存储来实现长期

在这里插入图片描述

 

2.3. 使用场景

a. 大量实时场景

Kappa 架构是一种数据处理架构,旨在为实时处理大量数据提供灵活、容错和可扩展的架构。它非常适用于各种实时数据处理、机器学习模型和实时数据分析、物联网系统等许多使用情况,都可以通过单一技术堆栈实现。

在这里插入图片描述
 

b. 实时数仓

111

和lambda架构相比,kappa架构没有离线数仓,通过kafka实现了实时数仓。kafka的存储代替了lambda架构中的批处理部分。

此架构优点:

  • Kafka可以保存更长时间的历史数据,它不仅起到消息队列的作用,也可以存储数据,替代数据库。
  • Flink流处理引擎解决了事件乱序下计算结果的准确性问题。
  • Kappa架构相对更简单,实时性更好,所需的计算资源远小于Lambda架构,随着实时处理需求的不断增长,更多的企业开始使用Kappa架构。

 

此架构缺点:

  1. kappa架构中用的kafka,本身kafka只是一个消息中间件,对于长周期历史的存储还是不行。
  2. 没有血缘关系管理
    里面的数据都是以topic的形式存储,无法像离线数仓一样,通过schema和表名来确定数据血缘。比如一个数据有问题,你不知道下游收到的影响范围,也不知道受影响的严重性,只能广而告之。对于一些损失无法做到及时的发现及阻断就很被动。
  3. 不支持update
    这个是kappa架构最严重的问题。举个例子,实时数仓里有个5分钟的窗口,假设有一条数据发生时延,没有按时到达,那么5分钟后就会按照逻辑完成计算。因为没有update,这条数据没有被计算,结果也就从这时候开始出错。

 

二. Comparison of Lambda and Kappa Architectures

1. Data Processing Systems

  • Lambda 架构使用两个独立的数据处理系统来处理不同类型的数据处理工作负载:一个批处理系统和一个流处理系统。
    在 Lambda 架构中,程序员需要学习和维护两个处理框架,并以加倍的方式支持任何日常代码更改。这种分离(如果没有以相同的方式实现)可能导致流处理与批处理产生不同的结果,从而可能引发进一步的业务问题
  • 相比之下,Kappa架构则通过单一的流处理引擎(流层)来处理完整的数据处理。
    Kappa 架构在实时处理数据时使用相同的代码,消除了为批处理和流处理维护单独代码库的额外工作的需要。这使其成为一种更高效、不易出错的解决方案。

 

2. Data Storage

  • Lambda 架构具有单独的长期数据存储层,用于存储历史数据并执行复杂的聚合操作。
  • 而 Kappa 架构则没有单独的长期数据存储层,所有数据都由流处理系统处理和存储

 

3. Complexity

  • 与 Kappa 架构相比,Lambda 架构通常更复杂,设置和维护都需要更多的工作,因为它需要两个独立的数据处理系统,并且需要持续的维护来确保批处理和流处理系统的正常高效运行。
  • Kappa 架构通常更简单,因为它使用单一的数据处理系统来处理所有数据处理工作负载。

然而,Kappa 架构需要一种思维方式的转变,将所有数据都视为流,并且需要对流处理和分布式系统有丰富的经验

 

三. The Importance of Choosing the Right Data Processing Architecture for a Business

数据处理架构的选择对企业至关重要,因为它影响数据处理管道的可伸缩性、性能和灵活性。企业选择一种满足其特定需求的大数据架构,并在做出决策之前仔细考虑每种选择的优缺点是非常重要的。

  • 通常情况下,如果您正在构建一个需要实时数据访问的系统,那么首选 Kappa 架构。随着经验的积累,您将能够掌握流式处理的方式,从而支持所有工作流程。
  • 当业务量不大,实时业务需求并没有那么明显,也可以选择Lambda架构。

 

参考:
https://nexocode.com/blog/posts/lambda-vs-kappa-architecture/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML+CSS+JS:花瓣登录组件

效果演示 实现了一个具有动态花朵背景和简洁登录框的登录页面效果。 Code <section><img src"./img/background.jpeg" class"background"><div class"login"><h2>Sign In</h2><div class"inputBox"…

重拾前端基础知识:CSS3

重拾前端基础知识&#xff1a;CSS3 前言边框圆角阴影图片 背景渐变文本字体多列动画与过渡2D 转换3D 转换过渡动画 网格布局弹性盒子&#xff08;重点&#xff09;父元素设置子元素设置 响应式设计设置 Viewport构建响应式网格视图12栅格媒体查询 案例讲解图片按钮分页 浏览器支…

【MATLAB】SVMD_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 SVMD_MFE_SVM_LSTM神经网络时序预测算法结合了单变量分解&#xff08;SVMD&#xff09;、多尺度特征提取&#xff08;MFE&#xff09;、聚类后展开支持向量机&#xff08;SVM&#xff09;…

rhcsa(rh134)

shell 查看用户shell a、如下查看/etc/shells文件列出了系统上所有可用的 shell&#xff08;具体的可用的 shell 列表可能会因不同的红帽版本和配置而有所不同&#xff09; &#xff08;如下图/etc/shells文件包含/bin/tmux并不意味着tmux是一个shell。实际上&#xff0c;/etc/…

CSS:弹性盒子Flexible Box布局

CSS:Flexible Box弹性盒子布局 一、flex布局原理 ​ flex是flexible Box的缩写,意为 ”弹性布局“&#xff0c;用来为盒状模型提供最大的灵活性&#xff0c;任何一个容器都可以指定为flex布局。 当我们的父盒子设置为flex布局之后&#xff0c;子元素的 float 、clear 和 vert…

4核8G服务器并发数多少?性能如何?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

WPF应用程序使用MVVM模式

文章目录 一、前言二、正文&#xff1a;模式 - WPF应用程序使用MVVM设计模式2.0 一些术语2.1 秩序与混乱2.2 MVVM模式的演变2.3 为何WPF开发者喜爱MVVM2.4 Demo应用程序2.5 路由命令逻辑2.6 ViewModel类层次结构2.7 ViewModelBase类2.8 CommandViewModel类2.9 MainWindowViewMo…

Vueuse:打造高效的 Vue.js 开发利器

Vueuse&#xff1a;打造高效的 Vue.js 开发利器 Vueuse 是一个功能强大的 Vue.js 生态系统工具库&#xff0c;它提供了一系列的可重用的 Vue 组件和函数&#xff0c;帮助开发者更轻松地构建复杂的应用程序。本文将介绍 Vueuse 的主要特点和用法&#xff0c;以及它在 Vue.js 开发…

【Vue的单选按钮不选中已解决亲测】

伙计&#xff0c;你是否因为后台给vue前端已经传入了对应的单选按钮的数据&#xff0c;为啥还是不选中呢&#xff01;&#xff1f; 这个问题实话我百度乐很多都不能解决我的问题&#xff0c;最后机智如我的发现乐vue的自身的问题&#xff0c;后端返回的数据类型如果是数字int类…

Git 指令深入浅出【1】—— 文件管理

Git 指令深入浅出【1】—— 文件管理 一、新建仓库二、配置1. 基本指令2. 免密配置3. 简化指令 三、管理文件1. 常用文件管理指令&#xff08;1&#xff09;基本指令工作区暂存区版本库 &#xff08;2&#xff09;日志&#xff08;3&#xff09;查看修改 2. 版本回退&#xff0…

MySQL基础--10.1--sql查询各科成绩前三名

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 sql查询各科成绩前三名建表造数 方法一&#xff1a;使用加行号的方式查询方法二&#xff1a;使用子查询嵌套查询原理解析考虑并列情况 方法三&#xff1a;窗口函数1…

全面整理!机器学习常用的回归预测模型

Datawhale干货 作者&#xff1a;曾浩龙&#xff0c;Datawhale意向成员 前言 回归预测建模的核心是学习输入 到输出 &#xff08;其中 是连续值向量&#xff09;的映射关系。条件期望 是 到 的回归函数。简单来说&#xff0c;就是将样本的特征矩阵映射到样本标签空间。 图…

2024.02.28作业

模拟面试 1. 什么是回调函数 将函数作为另一函数的参数 实现&#xff1a;通过函数指针&#xff0c;如线程的创建函数 2. 结构体和共用体的区别 结构体的每个成员都会分配内存&#xff0c;大小为各个成员所占内存之和&#xff0c;内存对齐 共用体的内存以最大成员为主 3. 赋…

2024年 前端JavaScript Web APIs 第一天 笔记

1.1 -声明变量const优先 1.2 -DOM树和DOM对象 1.3 -获取DOIM元素 1.4 -DOM修改元素内容以及年会抽奖 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content&quo…

学习Sora技术报告Video generation models as world simulators

原文链接&#xff1a; Video generation models as world simulators (openai.com) 摘要&#xff1a; 我们探索了在视频数据上大规模训练生成模型。具体来说&#xff0c;我们在可变片长、分辨率和纵横比的视频和图像上联合训练文本条件扩散模型text-conditional diffusion mo…

【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)

目录 1、锁的策略 1.1、乐观锁和悲观锁 1.2、轻量级锁和重量级锁 1.3、自旋锁和挂起等待锁 1.4、普通互斥锁和读写锁 1.5、公平锁和非公平锁 1.6、可重入锁和不可重入锁 2、synchronized 内部的升级与优化过程 2.1、锁的升级/膨胀 2.1.1、偏向锁阶段 2.1.2、轻量级锁…

2024年阿里云2核4G云服务器性能如何?价格便宜有点担心

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

Groovy(第五节) Groovy 之集合

Groovy 可以直接在语言内使用集合。在 Groovy 中,不需要导入专门的类,也不需要初始化对象。集合是语言本身的本地成员。Groovy 也使集合(或者列表)的操作变得非常容易,为增加和删除项提供了直观的帮助。 可以将范围当作集合 在前一节学习了如何用 Groovy 的范围将循环变得…

OpenHarmony 项目实战:智能体重秤

一、简介 本 demo 基于 OpenHarmony3.1Beta 版本开发&#xff0c;该样例能够接入数字管家应用&#xff0c;通过数字管家应用监测体重秤上报数据&#xff0c;获得当前测量到的体重&#xff0c;身高&#xff0c;并在应用端形成一段时间内记录的体重值&#xff0c;以折线图的形式…

皇冠测评:网络电视盒子哪个品牌好?电视盒子排行榜

欢迎各位来到我们的测评频道&#xff0c;本期我们要分享的产品是电视盒子&#xff0c;因很多网友留言不知道网络电视盒子哪个品牌好&#xff0c;我们通过为期一个月的测评后整理了电视盒子排行榜&#xff0c;想买电视盒子的可以看看下面这五款产品&#xff0c;它们各方面表现非…