什么是Kappa架构?

article/2025/8/21 7:40:59

写在前面

本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定大数据理论体系

解答

Kappa架构和Lambda架构有着或多或少的相似之处,只是出于简化考虑,去掉了批处理层,只保留了快速处理层。
其主要思想是避免从头开始进行批处理层计算,尝试把这些计算完全放在实时计算或快速处理层。
Lambda架构的一个缺点是必须编码并运行同样的逻辑两次,但Kappa架构避免了这个问题。
Kappa架构目前来说必须通过Kafka才能实现。

补充

Lambda架构的不足

虽然 Lambda 架构使用起来十分灵活,并且可以适用于很多的应用场景,但在实际应用的时候,Lambda 架构也存在着一些不足,主要表现在它的维护很复杂。

使用 Lambda 架构时,架构师需要维护两个复杂的分布式系统,并且保证他们逻辑上产生相同的结果输出到服务层中。

举个例子吧,我们在部署 Lambda 架构的时候,可以部署 Apache Hadoop 到批处理层上,同时部署 Apache Flink 到速度层上。

我们都知道,在分布式框架中进行编程其实是十分复杂的,尤其是我们还会针对不同的框架进行专门的优化。

所以几乎每一个架构师都认同,Lambda 架构在实战中维护起来具有一定的复杂性。那要怎么解决这个问题呢?

我们先来思考一下,造成这个架构维护起来如此复杂的根本原因是什么呢?

维护 Lambda 架构的复杂性在于我们要同时维护两套系统架构:批处理层和速度层。

我们已经说过了,在架构中加入批处理层是因为从批处理层得到的结果具有高准确性,而加入速度层是因为它在处理大规模数据时具有低延时性。

那我们能不能改进其中某一层的架构,让它具有另外一层架构的特性呢?

例如,改进批处理层的系统让它具有更低的延时性,又或者是改进速度层的系统,让它产生的数据视图更具准确性和更加接近历史数据呢?

Kappa 架构(Kappa Architecture),便是在这样的思考下诞生的。

Kappa 架构的诞生过程

Kappa 架构是由 LinkedIn 的前首席工程师杰伊·克雷普斯(Jay Kreps)提出的一种架构思想。

克雷普斯是几个著名开源项目(包括 Apache Kafka 和 Apache Samza 这样的流处理系统)的作者之一,也是现在 Confluent 大数据公司的 CEO。

克雷普斯提出了一个改进 Lambda 架构的观点:我们能不能改进 Lambda 架构中速度层的系统性能,使得它也可以处理好数据的完整性和准确性问题呢?

我们能不能改进 Lambda 架构中的速度层,使它既能够进行实时数据处理,同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据呢?

他根据自身多年的架构经验发现,我们是可以做到这样的改进的。

Apache Kafka 这样的流处理平台是具有永久保存数据日志的功能的。

通过平台的这一特性,我们可以重新处理部署于速度层架构中的历史数据。

以 Apache Kafka 为例来讲述整个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. 停止旧版本的作业实例,并删除旧的数据视图。这个架构就如同下图所示。

Kappa架构

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

当然了,也可以在上面讲到的步骤中做一些优化。 例如不执行第 4 步,也就是不删除旧的数据视图。这样的好处是当你发现代码逻辑出错时可以及时回滚(Roll Back)到上一个版本的数据视图中去。

又或者是你想在服务层提供 A/B 测试,保留多个数据视图版本将有助于你进行 A/B 测试。


http://chatgpt.dhexx.cn/article/1BOI5M2c.shtml

相关文章

机器学习中多分类模型的评估方法之--kappa系数

引言 分类是机器学习中监督学习的一种重要应用,基于统计的机器学习方法可以使用SVM进行二分类,可以使用决策书,梯度提升树等进行多分类。 对于二分类模型,我们通常可以使用ROC曲线来评估模型的预测效果。这里,我们介…

评分员间可信度与Kappa统计量 Inter-rater reliability Kappa statistics

评分员间可信度inter-rater reliability 在统计学中,评分员间可信度inter-rater reliability,评分员间吻合性inter-rater agreement,或一致性concordance 都是描述评分员之间的吻合程度。它对评判者们给出的评级有多少同质性homogeneity或共…

用混淆矩阵计算kappa系数

从一篇论文——融合注意力机制和高效网络的糖尿病视网膜病变识别与分类,看到人家除了特异性、敏感性、准确率、混淆矩阵以外,还用了加权kappa系数,所以了解一下kapp系数的知识,加权kappa还没找到更好的资料。。。 资料来源于百度百…

kappa 一致性系数计算实例

本文转载自新浪博客,网址:http://blog.sina.com.cn/s/blog_4aa4593d0100rwjd.html kappa系数在遥感分类图像的精度评估方面有重要的应用,因此学会计算kappa系数是必要的,但是从最近搜索的国内外网页和文献中都对kappa系数描述的不…

混淆矩阵(交叉表)及Kappa系数的计算

交叉分类表,是以两个不同时期的地理实体类型为横纵坐标的表格。 ①用于参照的时期的类型位于表格的上方,按照横方向排列 ②用以比较的时期的类型位于表格的左方,垂直排列 ③在横纵坐标上类型的排列顺序一致 ④位于对角线上的方格中记录…

【卡帕一致性检验(Kappa)】基于SPSS软件实现

利用WB和ELASA方法分别检测,利用Kappa系数分析2种方法的一致性。 1.SPSS操作 (1)在“数据视图”中输入数据,其中WB结果包括两类:positive和negative,即可以分别用1和2表示 (2)在“变…

kappa系数在评测中的应用

◆版权声明:本文出自胖喵~的博客,转载必须注明出处。 转载请注明出处:http://www.cnblogs.com/by-dream/p/7091315.html 前言 最近打算把翻译质量的人工评测好好的做一做。 首先废话几句,介绍下我这边翻译质量的人工评测怎么做。先…

一致性检验 -- Kappa 系数

一、Kappa 检验方法 在做数据分析时,我们经常会面临一致性检验问题,即判断不同的模型或者分析方法在预测结果上是否具有一致性、模型的结果与实际结果是否具有一致性等。另外,一致性检验在临床实验中也有着广泛的应用。对于两个或多个医务工作…

kappa系数---学习笔记

kappa系数是一个用于一致性检验的指标,也可用于衡量分类的效果对于分类问题,所谓一致性就是模型预测结果和实际分类结果是否一致。kappa系数的计算是基于混淆矩阵的,取值为-1到1之间,通常大于0。基于混淆矩阵的kappa系数计算公式如下&#xf…

总体分类精度和kappa系数计算实例详细介绍!

为啥要算总体分类精度和kappa系数呢?想必大家都知道是为了精度评价,当我们没有实测数据的时候,那么总体分类精度和kappa系数就派上用场了!我们没有实测数据,依旧能够评价自己的方法和模型的优良性。博客写的有点啰嗦~啊…

使用cohen kappa系数衡量分类精度

在诊断试验中,研究者希望考察不同诊断方法在诊断结果上是否具有一致性。如评价两个医务工作者对同一组病人的诊断结论的一致性、同一医务工作者对同一组病人前后进行两次观察作出诊断的一致性。1960年Cohen等提出用Kappa值作为评价判断的一致性程度的指标。实践证明…

每日一学 kappa系数

1.定义 Kappa系数用于 一致性检验 ,也可以用于 衡量分类精度 ,kappa系数的计算是 基于混淆矩阵的。 2.具体例子 3.具体指标的分析 kappa计算结果为-1~1,但通常kappa是落在 0~1 间 第一种分析准则--可分为五组来表示不同级别的一致性&…

Kappa系数计算

内容整理自百度百科 kappa系数是一种衡量分类精度的指标。 公式: k p o − p e 1 − p e k\frac{p_o-p_e}{1-p_e} k1−pe​po​−pe​​ 其中, p o p_o po​是每一类正确分类的样本数量之和除以总样本数,也就是总体分类精度 。C是类别总数…

Kappa系数

Kappa系数用于一致性检验 也可以用于衡量分类精度 kappa系数的计算是基于混淆矩阵的 kappa计算结果为-1~1,但通常kappa是落在 0~1 间,可分为五组来表示不同级别的一致性:0.0~0.20极低的一致性(slight)、0.21~0.40一般的一致性(fair)、0.41~…

嵌入式软件工程师常见面试问题

(嵌入式软件工程师面试题) 1、stm32启动方式? 有三种: ①从Flash启动,将Flash地址0x0800 0000映射到0x00000000,这样启动以后就相当于从0x0800 0000开始的,这是我们最常用的模式; ②从SRAM启动,将SRAM地址…

嵌入式软件工程师和嵌入式硬件工程师有什么区别

什么是嵌入式硬件工程师 随着嵌入式技术的普及,硬件工程师的性质也有所改变。嵌入式硬件工程师与我们平常所说的硬件工程师不同。嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的工作,例如: 底层驱动…

学软件嵌入式需要学c语言吗,嵌入式软件工程师需要学什么?

随着智能电子设备的普及,市场对嵌入式开发人员需求增多,嵌入式系统无疑成为了当前最热门极具发展前途的IT应用领域之一。很多人想要入门的同学都想学习这个却不知道嵌入式软件工程师需要学什么?今天传智播客就来说说嵌入式软件工程师需要学什么? 现在学习嵌入式就业的前景也…

如何成为嵌入式软件工程师,成为嵌入式工程师赚不赚钱?

自身对嵌入式软件工程师的感想 前言一、嵌入式软件是什么?一、成为嵌入式工程师赚不赚钱?二、嵌入式工程师不赚钱还做他干啥?三、如何学习?四、尝试自己学习新东西五、总结 前言 我所想阐述的事 在看了很多b站的垃圾推荐“”嵌入…

嵌入式软件工程师笔试面试指南目录

文章目录 必读作者简介嵌入式软件工程师笔试面试指南简介如何使用这份资料你可以得到什么嵌入式软件工程师笔试面试指南的价值某外企面试官对这份资料的评价(20210514)收获 oppo 联发科 京东offer应届生的评价(20210430)大疆offer…

什么是嵌入式软件工程师?需具备哪些能力?

计算机嵌入式逐渐被大家认可,然而嵌入式软件工程师到底是什么?做一个好的嵌入式软件工程师又需要具备哪些能力呢?今天尚观教育小编跟大家聊一聊。 1.嵌入式软件工程师是什么? 嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组…