kappa和lambda对比 | 程序员硬核评测


戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg

程序员硬核评测:客观、高效、不说软话。无论是技术质量、性能水平,还是工具筛选,一测便知!


作者:浪尖

转载:Spark学习技巧


首先我们会详细的讲解这两种架构,实现这两种架构的技术工具,还有就是如何决策使用这两种架构。


如何构建一个实时处理系统架构一直争论不断。一个好的实时处理系统必须是容错和可升级的。必须支持批量和增量的更新,必须可扩展。


在这些讨论中一个重要的里程碑是,storm的创始人,Nathan Marz,描述了我们目前所了解的lambda架构。Lambda架构目前已经有很多使用案例,实时上大量的公司都在使用,比如Yahoo和Netflix。当然,lambda架构也并不是得到的全是赞美,也有一些批判,就是它带来了编码的负担。( 原英:But of course, Lambda is not a silver bullet and has received some fair criticism on the coding overhead it can create.)


在2014年夏天,LinkedIn的Jay Kreps发表了一篇文章描述了Kappa架构,解决了一些Lambda架构的陷阱。Kappa架构并不是Lambda架构的替代,因为有些Lambda架构并不适合迁移到Kappa架构上去。


对于一个给定的案例,准确的评估哪种架构师最好的是很有挑战性的,错误的设计决策可能对数据分析项目的实施产生严重的影响。


现在,就深入细节去了解两种数据处理架构。


1lambda架构


 

640?wx_fmt=png

Lambda架构有三个层面组成:batch,speed,serving。

Batch层面有两个主要的任务:

1.管理历史数据。

2.重新结算结果,例如重新训练模型。


Batch层接受新的数据,将新的数据和历史数据进行合并,然后重新计算结果。Batch层计算了所有的数据,这使得系统能产生相对精确的结果。然而,由于计算时间比较久,使的结果延迟也会比较大。


Speed层主要提供低延迟,近实时的计算结果。Speed层接收数据,增量更新batch层的结果。由于speed层的增量算法,计算代价被极大减少。

Serving用batch层和speed层计算的结果提供多样的查询。


2kappa架构


640?wx_fmt=png


创建kappa架构的一个最重要的动机是避免维护batch和speed层两份独立的代码。一个核心的思想就是用一个单独的流处理引擎处理实时的计算和连续不断的数据的重复计算。代码的更改对结果影响很大,所以数据必须重新计算。结果kappa架构的组成只有两个部分:stream processing和serving。流处理层运行流处理任务。运行一个流处理作业以启用实时数据处理。仅仅当流处理作业更改了一些代码之后才会进行数据的重新处理。可以通过重启一个梗概代码后的流处理作业去处理所有以前的数据。


Serving层也是提供数据查询的。


640?wx_fmt=png


640?wx_fmt=jpeg


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:

  • 图解分布式架构的发展和演进 | 技术干货

  • Docker 系列学习文章 | 什么是容器云?

  • 任正非:华为海思芯片不是“备胎”!

  • 揭秘清华 AI 学堂班:姚期智担任首席教授,2019 年首批招收 30 人

  • Google Android 向华为“闭源”!华为手机迎来至暗时刻!

  • "两年前我对区块链的了解为零, 两年后我成了工程师" 我是如何得到第一份工作的?

  • 《使女的故事》大火,AI是背后最大推手?


640?wx_fmt=png真香,朕在看了!

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

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

相关文章

Feature分支

软件开发中,总有无穷无尽的新的功能要不断添加进来。 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发&…

git提交代码的时候出现fatal: Could not read from remote repository.

引言 当在git使用中出现这样的提示的解决方法。 解决方法 我采用重新获取ssh-key的方法,关于具体的操作,可以查看博文: https://www.cnblogs.com/janve/p/10946630.html。 实际上具体的步骤,就是下面几句: ssh-key…

Git多人协作

当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。 要查看远程库的信息,用git remote: $ git remote origin或者,用git remote -v显…

边缘计算精华问答 | 火爆的边缘计算为何兴起?

戳蓝字“CSDN云计算”关注我们哦!随着物联网在全球各行业中越来越普遍,企业们发现了云计算的不足,它不是解决所有问题的答案。此外,如果只有云计算,物联网项目不能充分发挥其潜力,特别是在实时分析&#xf…

qt下QString转换为const char*字符串

概述 本文直在说明将QString类型的变量转换为const char *类型。 实现 可以采用下面的方式来实现: QString.toStdString().c_str(); 示例 下面是一个示例: const QString msg "nis你好!"; const char * str msg.toStdStrin…

Rebase

在上一节我们看到了,多人在同一个分支上协作时,很容易出现冲突。即使没有冲突,后push的童鞋不得不先pull,在本地合并,然后才能push成功。 每次合并再push后,分支变成了这样: $ git log --grap…

腾讯优图贾佳亚:当AI进入产业应用时代时,计算机视觉技术更应该服务于人才对!...

戳蓝字“CSDN云计算”关注我们哦!从移动支付的自动贩卖机到刷脸支付的智能货柜;从亲自到柜台验证到人脸核身远程开卡;从排队买票、排队进门的糟糕旅游体验到提前预约,刷脸入园的智慧旅游……在昆明的腾讯全球数字生态大会AI 分论坛…

gitlab常用的命令

引言 使用gitlab提交代码的时候,若是使用的命令行,则需要输入命令行指令。下面是日常遇到的常用的命令行指令。 详情 git命令行常用指令的使用: git status #上次提交后是否对文件再做了修改项目1git add . #添加所有的变动git checkout …

创建标签

在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch * devmaster $ git checkout master Switched to branch master然后,敲命令git tag 就可以打一个新标签: $ git tag v1.0可以用命令git tag查看…

使用AWS CloudWatch 调优Lambda函数 | 技术头条

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!译者:风车牛马整理:刘丹Kyle Galbraith,高级软件工…

记录greater和less

引言 本文针对C11中greater和less做简单的记录。本文使用visual studio 2017下控制台输出程序可以直接使用c11特性。 内部实现 查看greater和less会看到其下面的实现; template<class _Ty void>struct greater{ // functor for operator>_CXX17_DEPRECATE_ADAPTO…

操作标签

如果标签打错了&#xff0c;也可以删除&#xff1a; $ git tag -d v0.1 Deleted tag v0.1 (was f15b0dd)因为创建的标签都只存储在本地&#xff0c;不会自动推送到远程。所以&#xff0c;打错的标签可以在本地安全删除。 如果要推送某个标签到远程&#xff0c;使用命令git pu…

ARM到底是一家什么样的公司?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;小枣君转自&#xff1a;鲜枣课堂这两天&#xff0c;一家叫做ARM的公司…

Visual Studio中输入英文会在字母之间自动增加空格

现象 不小心按了什么键之后字母之间增加了空格&#xff0c;如下面&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/b211b973b9c8470fae4402161ddb3935.png 解决办法 针对上面图片中显示的这种英文字母之间出现空格&#xff0c;是输入法出现了问题。恢复的…

Git 文件重命名

重命名 git mv oldFileName newFileName git commit -am"修改记录说明"

C中指针与成员变量生命周期的示例

引言 本文针对于碰到的指针做一些记录。详见下面的示例。 示例一 返回char类型指针&#xff0c;使用局部静态数组。 #include <stdlib.h>char * GetTestMemory(void) {static char p[] "hello world";printf("src%x\n",p);//数组首地址printf(&…

从Spark Streaming到Apache Flink: 实时数据流在爱奇艺的演进 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;陈越晨转自&#xff1a;高可用架构本文将为大家介绍Apache Flink在爱…

Git 添加和提交组合命令

组合命令&#xff1a; git commit -am"修改记录说明"单条命令&#xff1a; git add 文件名 git commit -m"修改记录说明"

Storm精华问答 | Storm的配置需要注意什么问题?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架&#xff0c;具有最高的摄取率。今天&#xff0c;我们就挑一些Storm的安装配置问题来看看吧。1Q&#xff1a;…

ifndef与#program once的区别

概述 平时我们为了防止头文件的重复包含&#xff0c;会使用#ifndef或者#program once。这里记录一下它们之间的区别。 区别 ifndef需要定义宏名&#xff0c;且可以跨平台使用&#xff0c;#program once却是windows专用的&#xff1b;ifndef相对于#program once而言&#xff…