大数据架构之--Kappa架构

article/2025/9/12 1:40:26

一、什么是Kappa架构

Kappa 架构是由 LinkedIn 的前首席工程师杰伊·克雷普斯(Jay Kreps)提出的一种架构思想。克雷普斯是几个著名开源项目(包括 Apache KafkaApache Samza 这样的流处理系统)的作者之一。

Kreps 提出了一个改进 Lambda 架构的观点:

  • 通过改进 Lambda 架构中的Speed Layer,使它既能够进行实时数据处理,同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据

Kappa架构的原理是:在Lambda 的基础上进行了优化,删除了 Batch Layer 的架构,将数据通道以消息队列进行替代。因此对于Kappa架构来说,依旧以流处理为主,但是数据却在数据湖层面进行了存储,当需要进行离线分析或者再次计算的时候,则将数据湖的数据再次经过消息队列重播一次则可。

 

二、Kappa架构组成

1.基本概念

1)消息传输层(Speed Layer)

消息传输层提供接收和存储流数据的消息队列,数据可以在某个需要限度内全量存储,并在必要时从头开始读取重新计算,从而获得可靠结果。

消息传输层通常具有以下特点:

  • 持久性------数据可任意设定存储时间

  • 分布式------数据分布式存储

  • 数据可重放------数据可以被replay,从头重新处理

  • 高性能------能够提供高性能数据读写访问

2)流处理层(Serving Layer)

流处理层提供流计算引擎,用于进行流分布式实时计算。

流处理层通常具有以下特点:

  • 低延迟------保证快速响应

  • 高吞吐------同时处理庞大数据量

  • 具有容错与恢复能力------保证系统稳定可用

  • 一致性保证------适用任何强一致性需求的应用(如金融级需求)

3)流处理核心思想

1.用Kafka或者类似MQ队列系统收集各种各样的数据,你需要几天的数据量就保存几天。

2.当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。

3.当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。

2. Kappa架构优点

Kappa架构的优点在于将实时和离线代码统一起来,方便维护而且统一了数据口径的问题。

3. Kappa架构缺点

  • 流式处理对于历史数据的高吞吐量力不从心:所有的数据都通过流式计算,即便通过加大并发实例数亦很难适应IOT时代对数据查询响应的即时性要求。

  • 开发周期长:此外Kappa架构下由于采集的数据格式的不统一,每次都需要开发不同的Streaming程序,导致开发周期长。

  • 高度依赖实时计算系统的能力:在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。

  • 服务器成本浪费:Kappa架构的核心原理依赖于外部高性能存储redis,hbase服务。但是这2种系统组件,又并非设计来满足全量数据存储设计,对服务器成本严重浪费。

4.Lambda架构和Kappa架构的对比

优点缺点
lamba1)架构简单 2)很好的结合了离线批处理和实时流处理的优点 3)稳定且实时计算成本可控 4)离线数据易于订正1)实时,离线数据很难保持一致结果 2)需要维护两套系统
kappa1)只需要维护实时处理模块 2)可以通过消息重放 3)无需离线实时数据合并1)强依赖消息中间件缓存能力 2)实时数据处理时存在丢失数据可能
对比项LambdaKapppa
实时性实时实时
计算资源批和流同时运行,资源消耗大只有流处理,资源开销小
重新计算吞吐量批式全量处理,吞吐较高流式全量处理,吞吐较批式全量要低一些
开发、测试难度系缚 个需求都需要批处理和流处理两励磁代码,开发,测试,上线难度大一些只需实现一套代码,开发,测试,上线难度相对较小
运维成本维护两励磁系统(引擎),运维成本大维护一套系统(引擎),运维成本较小

三、Kappa架构选型

1. Kappa架构模型

 

与 Lambda 架构不同的是,Kappa 架构去掉了批处理层这一体系结构,而只保留了速度层。你只需要在业务逻辑改变又或者是代码更改的时候进行数据的重新处理。

2.Kappa架构处理逻辑

 

  1. 部署 Apache Kafka,并设置数据日志的保留期(Retention Period)。这里的保留期指的是你希望能够重新处理的历史数据的时间区间

    • 例如,如果你希望重新处理最多一年的历史数据,那就可以把 Apache Kafka 中的保留期设置为 365 天。

    • 如果你希望能够处理所有的历史数据,那就可以把 Apache Kafka 中的保留期设置为“永久(Forever)”

  2. 如果我们需要改进现有的逻辑算法,那就表示我们需要对历史数据进行重新处理

    • 我们需要做的就是重新启动一个 Apache Kafka 作业实例(Instance)。这个作业实例将从头开始,重新计算保留好的历史数据,并将结果输出到一个新的数据视图中。

    • 我们知道 Apache Kafka 的底层是使用 Log Offset 来判断现在已经处理到哪个数据块了,所以只需要将 Log Offset 设置为 0,新的作业实例就会从头开始处理历史数据。

  3. 当这个新的数据视图处理过的数据进度赶上了旧的数据视图时,我们的应用便可以切换到从新的数据视图中读取。

  4. 停止旧版本的作业实例,并删除旧的数据视图。

3.组件选型

 

(1)使用Kafka + Flink构建Kappa流计算数据架构。

(2)Kafka对接组合ElasticSearch实时分析引擎,部分弥补其数据分析能力不足的问题。

但是ElasticSearch也只适合对合理数据量级的热数据进行索引,无法覆盖所有批处理相关的分析需求,这种混合架构某种意义上属于Kappa和Lambda间的折中方案。

(3)Spark流处理输出时是无法保证Exactly-once(失败时部分已经写出、而还有部分未写出,重启时从上一个检查点开始,造成部分重复),需要借助外部存储的唯一键或者是事务来保证幂等输出。而Flink借鉴 Chandy-Lamport 分布式快照算法实现的Asynchronous Barrier Snapshots算法来提供一致性保证。

参考资料:

二:大数据架构回顾-Kappa架构 - 天戈朱 - 博客园

Lambda架构,Kappa架构和去ETL化的IOTA架构 - 简书

从Lambda架构到Kappa架构再到?浅谈未来数仓架构设计~-阿里云开发者社区

Lambda架构,Kappa架构和去ETL化的IOTA架构 - 简书


http://chatgpt.dhexx.cn/article/9sgtcCuW.shtml

相关文章

大数据架构及技术体系

下面是大数据体系架构图 大数据分2个部分,一部分是走实时的,另外一部分是走离线的,不管那块都需要数据来分析 从上图来看,数据分为结构化数据(MYSQL,ORACLE等),半结构数据(文件日志…

大数据架构演进

1、数仓架构演变(场景驱动) 1.1 经典数仓架构 数据仓库概念是Inmon于1990年提出并给出了完整的建设方法 1.2 离线大数据架构 随着互联网时代来临,数据量暴增,开始使用大数据工具来代替经典数仓中的传统工具 此时仅仅是工具的…

大数据架构(一)背景和概念

-系列目录- 大数据架构(一)背景和概念 大数据架构(二)大数据发展史 一、背景 1.岗位现状 大数据在一线互联网已经爆发了好多年,2015年-2020年(国内互联网爆发期)那时候的大数据开发,刚毕业能写Hive SQL配置个离线任务、整个帆软报表都20K起步。如果做到架…

大数据架构

大数据核心原理和场景分析 processon:https://www.processon.com/view/link/60b4d0071e08532bd00e9290

大数据架构图

大数据管理数据处理过程图 大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察力。大数据处理的主要流程包括数据收集、数据存储、数据处理、数据应用等主要环节。随着业务的增长,大量和流程、…

大数据架构:全网最全大数据架构生态

文章目录 简介1、数据采集技术框架2、数据存储技术框架3、分布式资源管理框架4、数据计算框架(1)离线数据计算 5、数据分析技术框架6、任务调度技术框架7、大数据底层基础技术框架8、数据检索技术框架9、大数据集群安装管理框架 简介 随着大数据行业的发…

架构-大数据架构-阿里

大数据架构 大数据框架从0到1整个过程的实现,根据本博客内容,可以实现整个大数据基本搭建,只是大概步骤,供学习参考。 本博客从下面5个方面介绍: 技术框架技术选型系统架构设计业务流程生态实现步骤 以阿里为例的大数…

大数据架构新解

大数据系统大体可以分成以下四个部分: 1,数据采集层 2,数据计算层 3,数据服务层 4,数据应用层 下图是阿里巴巴大数据系统架构图: 一、数据采集层 数据采集主要分成以下三块数据: 1&#xff…

大数据技术及大数据架构

大数据架构分为:数据来源层->数据采集层->分布式存储层->传输层->分析计算层->业务存储层->展示层共七层,基本使用flume sqoop hive hadoop spark flink mysql redis logstash elasticsearch datax等技术

大数据基础课03 阿里美团这些大厂都在用什么大数据架构?

首先,我想讲一个叫庖丁解牛的故事,想必你应该听过。庖丁从开始杀牛,到他的故事被写下,操刀十九年,杀了数千头牛。也正是由于丰富的实践经验,他总结出了解杀牛的方法论:依照牛生理上的天然结构&a…

大数据架构演变

大数据架构演变 一、传统离线大数据架构二、Lambda架构(离线处理实时链路)-传统实时开发三、Lambda架构(离线数仓实时数仓)四、Kappa架构五、架构选择:六、湖仓一体(流批一体)实时数仓架构七、从…

大数据基础架构

一、大数据两大核心技术: 分布式存储:HDFS、HBase、NoSQL、NewSQL 分布式处理:MapReduce 二、大数据计算模式: 三、代表性大数据技术: 1.Hadoop:ETL工具(extract、transform、load&#xff0…

大数据架构简介

大数据技术其实是分布式技术在数据处理领域的创新性应用,其本质和此前讲到的分布式技术思路一脉相承,即用更多的计算机组成一个集群,提供更多的计算资源,从而满足更大的计算压力要求。 大数据技术讨论的是,如何利用更多…

大数据之大数据技术架构

上期我们说到大数据的概念,其实,大数据比我们想象中的还要复杂,本期,我们主要从技术的角度介绍一下大数据的知识。 大数据技术是一系列技术的总称,它是集合了数据采集与传输、数据存储、数据处理与分析、数据挖掘、数据…

常用的几种大数据架构剖析

数据分析工作虽然隐藏在业务系统背后,但是具有非常重要的作用,数据分析的结果对决策、业务发展有着举足轻重的作用。随着大数据技术的发展,数据挖掘、数据探索等专有名词曝光度越来越高,但是在类似于Hadoop系列的大数据分析系统大…

一张图解释清楚大数据技术架构,堪称阿里的核心机密

我们先来看看这张图,这是某公司使用的大数据平台架构图,大部分公司应该都差不多: 从这张大数据的整体架构图上看来,大数据的核心层应该是:数据采集层、数据存储与分析层、数据共享层、数据应用层,可能叫法有…

一文搞懂Matlab的3种取整函数(round、ceil、floor)

1、四舍五入取整:round(x) 对实数和复数(实部和虚部)都是四舍五入取整 2、向上取整:ceil(x) 对实数和复数(实部和虚部)都是向上取整 3、向下取整:floor(x) 对实数和复数(实部和…

MATLAB取整及位数

Matlab取整函数: fix, floor, ceil, round 函数操作Y fix(X)向零取整Y floor(X)向下取整Y ceil(X)向上取整Y round(X)四舍五入取整 Y fix(X)将 X 的每个元素朝零方向四舍五入为最近的整数。对于正方向的 X,fix 的行为与 floor 相同。对于负方向的 X&#xff…

Matlab之取整函数

一、函数取整函数 函数取整,有如下四种函数 floor():向下取整ceil():向上取整round():取最近整数fix():向0取整 二、例程 1、floor():向下取整 disp(floor-向下取整); A1floor(1.2) A2floor(2.5) A3floor(-2.5) 2、ceil():向上取整 disp(ceil-向上取整); B1ce…