大数据架构之--Kappa架构
一、什么是Kappa架构
Kappa 架构是由 LinkedIn 的前首席工程师杰伊·克雷普斯(Jay Kreps)提出的一种架构思想。克雷普斯是几个著名开源项目(包括 Apache Kafka 和 Apache 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架构的对比
优点 | 缺点 | |
---|---|---|
lamba | 1)架构简单 2)很好的结合了离线批处理和实时流处理的优点 3)稳定且实时计算成本可控 4)离线数据易于订正 | 1)实时,离线数据很难保持一致结果 2)需要维护两套系统 |
kappa | 1)只需要维护实时处理模块 2)可以通过消息重放 3)无需离线实时数据合并 | 1)强依赖消息中间件缓存能力 2)实时数据处理时存在丢失数据可能 |
对比项 | Lambda | Kapppa |
---|---|---|
实时性 | 实时 | 实时 |
计算资源 | 批和流同时运行,资源消耗大 | 只有流处理,资源开销小 |
重新计算吞吐量 | 批式全量处理,吞吐较高 | 流式全量处理,吞吐较批式全量要低一些 |
开发、测试难度 | 系缚 个需求都需要批处理和流处理两励磁代码,开发,测试,上线难度大一些 | 只需实现一套代码,开发,测试,上线难度相对较小 |
运维成本 | 维护两励磁系统(引擎),运维成本大 | 维护一套系统(引擎),运维成本较小 |
三、Kappa架构选型
1. Kappa架构模型
与 Lambda 架构不同的是,Kappa 架构去掉了批处理层这一体系结构,而只保留了速度层。你只需要在业务逻辑改变又或者是代码更改的时候进行数据的重新处理。
2.Kappa架构处理逻辑
部署 Apache Kafka,并设置数据日志的保留期(Retention Period)。这里的保留期指的是你希望能够重新处理的历史数据的时间区间
例如,如果你希望重新处理最多一年的历史数据,那就可以把 Apache Kafka 中的保留期设置为 365 天。
如果你希望能够处理所有的历史数据,那就可以把 Apache Kafka 中的保留期设置为“永久(Forever)”
如果我们需要改进现有的逻辑算法,那就表示我们需要对历史数据进行重新处理
我们需要做的就是重新启动一个 Apache Kafka 作业实例(Instance)。这个作业实例将从头开始,重新计算保留好的历史数据,并将结果输出到一个新的数据视图中。
我们知道 Apache Kafka 的底层是使用 Log Offset 来判断现在已经处理到哪个数据块了,所以只需要将 Log Offset 设置为 0,新的作业实例就会从头开始处理历史数据。
当这个新的数据视图处理过的数据进度赶上了旧的数据视图时,我们的应用便可以切换到从新的数据视图中读取。
停止旧版本的作业实例,并删除旧的数据视图。
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架构 - 简书
大数据架构之--Kappa架构相关推荐
- 大数据架构中的流式架构和Kappa架构
关于大数据的架构有很多,比如说传统的大数据架构,当然,还有很多经典的大数据架构,比如说流式架构和Kappa架构.流式架构和Kappa架构在大数据中的应用还是很多的,在这篇文章中我们就给大家介绍一下关于 ...
- 大数据平台数据处理之Lambda架构和Kappa架构
首先我们来看一个典型的互联网大数据平台的架构,如下图所示: 在这张架构图中,大数据平台里面向用户的在线业务处理组件用褐色标示出来,这部分是属于互联网在线应用的部分,其他蓝色的部分属于大数据相关组件,使 ...
- 大数据三种主流架构(Lambda、Kappa、IOTA)
文章目录 前言 Lambda架构 Lambda架构的介绍 Lambda架构的关键性 Lambda的三层架构 Lambda的三层架构 Speed Layer 速度层 Serving layer 服务层 ...
- 第十七期:详解大数据处理中的Lambda架构和Kappa架构
在这张架构图中,大数据平台里面向用户的在线业务处理组件用褐色标示出来,这部分是属于互联网在线应用的部分,其他蓝色的部分属于大数据相关组件,使用开源大数据产品或者自己开发相关大数据组件. 典型互联网 ...
- 物联网大数据平台软件开发架构案例解析
物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...
- 大数据平台的整体架构由哪些组成
大数据平台将互联网使用和大数据产品整合起来,将实时数据和离线数据打通,使数据能够实现更大规模的相关核算,挖掘出数据更大的价值,然后实现数据驱动事务.那么,大数据平台的整体架构由哪些组成呢? 一.事务使 ...
- 医疗大数据服务平台技术架构有哪些
医疗健康大数据服务平台是一个包含多个业务系统.多个自身管理软件.是一系列软.硬件和人员.政策支持的综合系统体系,统一建设医疗健康云计算服务中心,集中存储居民医疗卫生信息和居民电子健康档案等数据,满足社 ...
- 新⼀代USDP开源套件,可替代CDH的免费大数据套件平台及架构选型
持续输出 敬请关注 大数据架构 湖仓一体化 流批一体 离线+实时数仓 各种大数据解决方案 各种大数据新技术实践 持续输出 敬请关注 [第一篇]⼤数据平台基础架构及解决⽅案https://bl ...
- OPPO大数据离线计算平台架构演进
1 前言 OPPO的大数据离线计算发展,经历了哪些阶段?在生产中遇到哪些经典的大数据问题?我们是怎么解决的,从中有哪些架构上的升级演进?未来的OPPO离线平台有哪些方向规划?今天会给大家一一揭秘. 2 ...
最新文章
- ibatis增删改、批量增删改以及查询
- jdbc.properties 配置
- java 修饰符作用_Java关键字修饰符的作用范围
- 一文让你完全弄懂Stegosaurus
- 1023. 组个最小数 (20)
- python教程苹果版_python教程
- 现在学html4,HTML学习心得(4)
- 蛮力法在求解凸包问题中的应用(JAVA)
- lisp线段两端同时缩短的命令_老杨讲禅——线段与特征序列(1)
- jQuery中的join方法
- Delphi之TClientSocket和TServerSocket使用tcp keepalive心跳机制实现“断网”、断电检测...
- 打造属于自己的 linux版(硬盘版或电子盘)view5 终端
- 经典有源滤波电路(赛伦-凯滤波器)
- rclone 实现 GoogleDrive 同步至 OneDrive
- C语言函数定义和函数调用
- 一张照片,如何生成一个二维码?
- 归一化函数normalize
- 淘管家一键铺货怎么弄?和分销下单有什么区别?
- unity中的一个简单易用的A*寻路算法类
- 【技术邻】基于Ansys Icepak的散热器优化