数据仓库:架构之详解Kappa和Lambda

news2024/12/29 10:08:29

目录

一、前言

二、架构详解

1 Lambda 架构

1.1 Lambda 架构组成

1.2 Lambda 特点

1.3 Lambda 架构的优点

1.4 Lambda 架构的不足

2 Kappa 架构

2.1 Kappa 架构的核心组件

2.2 Kappa 架构优点

2.3 Kappa 架构的注意事项

三、区别对比

四、选择时考虑因素


一、前言

在大数据处理领域,有两种突出的数据架构已成为处理大量数据的流行选择:Lambda架构和Kappa架构。这两种架构为实时和批处理数据提供了强大的技术解决方案,使组织能够从数据资产中获取价值。

本文中我们将深入研究Lambda架构和Kappa架构,理解他们的主要特征、优点和区别。

二、架构详解

1 Lambda 架构

随着大数据应用的发展,人们逐渐对系统的实时性提出了要求,为了计算一些实时指标,就在原来离线数仓的基础上增加了一个实时计算的链路,并对数据源做流式改造(即把数据发送到消息队列),实时计算去订阅消息队列,直接完成指标增量的计算,推送到下游的数据服务中去,由数据服务层完成离线&实时结果的合并。

Lambda 架构(Lambda Architecture)是由 Twitter 工程师南森·马茨(Nathan Marz)提出的大数据处理架构。这一架构的提出基于马茨在 BackType 和 Twitter 上的分布式数据处理系统的经验。

Lambda 架构融合了批处理与实时处理,使开发人员能够构建大规模分布式数据处理系统。它具有很好的灵活性和可扩展性,也对硬件故障和人为失误有很好的容错性。

1.1 Lambda 架构组成

Lambda 架构总共由三层系统组成:

  1. 批处理层(Batch Layer)
  2. 加速层(Speed Layer)
  3. 服务层(Serving Layer)

Lambda与DAMA的SBA架构有异曲同工之妙(下图为DAMA-SBA架构)

DAMA-SBA架构

1.2 Lambda 特点

批处理层存储管理主数据集(不可变的数据集)和预先批处理计算好的视图:批处理层使用可处理大量数据的分布式处理系统预先计算结果。它通过处理所有的已有历史数据来实现数据的准确性。这意味着它是基于完整的数据集来重新计算的,能够修复任何错误,然后更新现有的数据视图。输出通常存储在只读数据库中,更新则完全取代现有的预先计算好的视图。

加速层会实时处理新来的大数据:加速层通过提供最新数据的实时视图来最小化延迟。加速层所生成的数据视图可能不如批处理层最终生成的视图那样准确或完整,但它们几乎在收到数据后立即可用。而当同样的数据在批处理层处理完成后,在加速层的数据就可以被替代掉了。

本质上,加速层弥补了批处理层所导致的数据视图滞后。比如说,批处理层的每个任务都需要 1 个小时才能完成,而在这 1 个小时里,我们是无法获取批处理层中最新任务给出的数据视图的。而加速层因为能够实时处理数据给出结果,就弥补了这 1 个小时的滞后。

服务层用作查询和可视化数据的访问点。所有在批处理层和加速层处理完的结果都输出存储在服务层中,并提供一直的数据视图。服务层通过返回预先计算的数据视图或从加速层处理构建好数据视图来响应查询。

1.3 Lambda 架构的优点

Lambda架构提供了几个好处:

  1. 它通过跨多个层使用复制的数据来提供容错能力,从而确保数据可用性和弹性。
  2. 该体系结构还支持可扩展的处理,因为每一层都可以独立扩展以处理不断增加的工作负荷。
  3. 此外,批处理和实时处理的分离提高了资源利用率,因此批处理计算可以在更大的时间窗口上执行。

1.4 Lambda 架构的不足

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

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

我们都知道,在分布式框架中进行编程其实是十分复杂的,尤其是我们还会针对不同的框架进行专门的优化。所以几乎每一个架构师都认同,Lambda 架构在实战中维护起来具有一定的复杂性。

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

维护 Lambda 架构的复杂性在于我们要同时维护两套系统架构:批处理层和加速层。我们已经说过了,在架构中加入批处理层是因为从批处理层得到的结果具有高准确性,而加入加速层是因为它在处理大规模数据时具有低延时性。

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

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

另外一种在大规模数据处理中常用的架构——Kappa 架构(Kappa Architecture),便是在这样的思考下诞生的。

Kappa 架构

Kappa 架构通过专注于流处理,提供了 Lambda 架构的简化替代方案。它包含不可变数据流的概念,无需维护单独的批处理层。

Kappa 架构可以认为是 Lambda 架构的简化版(只要移除 lambda 架构中的批处理部分即可)。

在 Kappa 架构中,所有数据都作为无限的事件流引入和处理。数据流经系统并进行实时处理,从而实现近乎即时的洞察力。

2.1 Kappa 架构的核心组件

流引入:从各种源连续引入数据并存储在事件日志中,例如 Apache Kafka。事件日志充当持久、容错的存储机制,可保留事件的完整历史记录。

流处理:流处理层使用事件日志中的数据,应用实时计算,并生成所需的输出。像Apache Kafka Streams或Apache Flink这样的技术可用于处理和分析。

输出服务:处理后的数据可通过各种输出通道访问,例如实时仪表板、API 或数据接收器,以供进一步分析或使用。

2.2 Kappa 架构优点

Kappa 架构通过专注于流处理,它简化了整体系统设计并降低了操作复杂性。该架构提供低延迟处理,因为数据近乎实时地处理,无需批量计算。它还在数据一致性方面提供了简单性,因为不需要同步和合并来自不同层的数据。

2.3 Kappa 架构的注意事项

在采用 Kappa 架构时需要牢记一些注意事项:由于所有数据都是实时处理的,因此如果没有额外的组件或流程,就没有对批处理或历史分析的固有支持。在处理某些需要分析大型历史数据集的用例时,此限制可能会带来挑战。此外,对连续流处理的依赖引入了对流处理框架的性能和可伸缩性的依赖。

三、区别对比

四、选择时考虑因素

在 Lambda 和 Kappa 架构之间做出决定时,应考虑以下几个因素:

  • 数据特征:考虑数据的性质和处理要求。如果应用案例需要实时和历史分析,则 Lambda 架构可能更适合。另一方面,如果主要关注实时处理和低延迟见解,那么 Kappa 架构可能更合适。
  • 系统复杂性:评估与在 Lambda 架构中管理多个处理管道相关的复杂性与 Kappa 架构中单个流处理管道的简单性。考虑组织的资源、专业知识以及实施和维护所需的工作量级别。
  • 可伸缩性和性能:评估系统的可伸缩性要求。这两种体系结构都可以水平扩展,但特定的技术选择和实现细节可能会影响性能。考虑希望处理的数据量、速度和种类,并选择能够满足可扩展性需求的体系结构。
  • 数据一致性:检查应用程序的一致性要求。Lambda 架构提供了用于处理批处理层和加速层之间数据一致性的内置机制。在 Kappa 架构中,由于没有批处理层,因此简化了数据一致性,但在处理无序事件或延迟到达时可能需要额外的考虑因素。
  • 操作注意事项:评估每个体系结构的操作方面,例如部署、监视和容错。考虑所选体系结构的工具、库和社区支持的可用性。

总之,Lambda 和 Kappa 架构都为处理大数据工作负载提供了强大的解决方案。Lambda 架构结合了批处理和实时处理的优势,提供了一段时间内数据的全面视图。另一方面,Kappa 架构通过专注于实时处理来简化系统设计,提供低延迟的洞察力。通过仔细考虑数据和应用程序的特定要求和特征,可以选择最适合业务与技术需求的体系结构,并使组织能够从大数据中获得数据资产的价值。

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

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

相关文章

录屏软件自动开启录视频,是如何实现的?

工作要留痕,作为职场人的一项必备技能,因此许多人在做一些重要操作的时候,就会提前开启录屏软件,把操作的每一个步骤进行录制,以避免在出现问题的时候进行检查。当每天都需要在固定的时间点重复某项工作的时候&#xf…

【AI实用技巧】GPT写sql统计语句

编写sql的统计语句是一项复杂的任务,特别是涉及多表的情况下。但有了GPT的帮助,一切变得轻松愉快。 AI7号 - 最强人工智能(GPT)中文版https://ai7.pro/s/9v2um 举例说明 有表结构如下: users(user_id, name) bills(…

家具生产ERP有哪几种?如何选择家具生产ERP

不同种类的家具产品有差异化的原材料和制造工艺,每道生产工艺又有不同的管理模式和难点,有些家具生产企业内部还存在各个业务环节信息传递不畅、财务核算不清、不能实时获取库存动态数据等情况。 形成对比的则是部分家具生产企业引入ERP系统完成数字化全…

「C++」虚函数与多态

💻文章目录 📄前言虚函数概念虚函数重写虚函数的协变 重载、覆盖(重写)、隐藏(重定义)的对比 多态多态的概念多态的定义与实现多态的类型多态的构成条件抽象类 多态的原理虚函数表 多继承中的虚函数表 &…

数字化转型背景下,企业如何做好知识管理?

在当今数字化转型的时代,企业面临着日益复杂和快速变化的商业环境。知识管理成为了企业成功的关键之一。有效地管理和利用知识资源可以提升企业的创新能力、决策质量和竞争力。以下我列了一些关键的点,讲讲在数字化转型背景下,企业如何可以做…

21款奔驰GLE350升级香氛负离子车载香薰

香氛负离子系统是由香氛系统和负离子发生器组成的一套配置,也可以单独加装香氛系统或者是负离子发生器,香氛的主要作用就是通过香氛外壳吸收原厂的香水再通过空调管输送到内饰中,而负离子的作用就是安装在空气管中通过释放电离子来打击空气中…

浪潮信息云峦服务器操作系统KeyarchOS体验与实践

写在前面 大家好我是网络豆,一名云计算运维人员,本文将会带大家体验一下浪潮信息服务器操作系统云峦KeyarchOS。看看浪潮信息服务器操作系统云峦KeyarchOS的优势与实践操作如何。 背景了解 KeyarchOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术…

【Python测试开发】:切换窗口和表单

一、多窗口切换 浏览器打开的窗口其实会有一个叫做句柄的概念。 句柄就类似于每一个标签页的ID一样,具有唯一性。 1.1 语法 获取当前窗口句柄,注意后面没有括号哦~ driver.current_window_handle获取所有窗口句柄,结果以列表格式存储&am…

『亚马逊云科技产品测评』活动征文|开发一个手机官网

『亚马逊云科技产品测评』活动征文|开发一个手机官网 授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 前言 …

java系列之 页面打印出 [object Object],[object Object]

我 | 在这里 🕵️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 🏠 工作 | 广州 ⭐ Java 全栈开发(软件工程师) 🎃 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 🏷️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

心梗救治日:我希望他们都能活着到急诊

点击文末“阅读原文”即可参与节目互动 后期 / 朱峰 监制 / 姝琦 运营 / 卷圈,Sand 封面 / 姝琦midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 联合制作 / 美国心脏协会 当意外发生,这期节目可能会让你从手足无措,变成应对有序。 …

Geovia 2022 新功能

​GEOVIA是达索系统3DEXPERIENCE平台旗下品牌产品之一。GEOVIA目前侧重于矿业工程行业,主要用于地理空间大场景建模与仿真模拟,提高整个自然资源部门的可预测性、效率、安全性和可持续性。 新增功能介绍 01.角色更新 达索系统于2021年11月发布了GEOVIA…

国学短剧《我是小影星》栏目火热开拍

近日,国学短剧《我是小影星》栏目花絮拍摄,在上海市徐汇区漕溪路595号A座B1层开拍。该节目招募全国各地的有才华,有表现力怀揣梦想的小朋友来参与节目拍摄。节目旨在以中华传统文化为切入点,通过戏剧、歌舞、音乐等多种艺术形式的…

解析紫光展锐T820 5G芯片——让照片接近原色

紫光展锐系统级安全的高性能5G SoC芯片平台T820,采用八核CPU架构,6nm EUV先进工艺,金融级全内置安全方案,在性能、功耗与5G通信体验等方面,较上一代产品更为出色。 此前,已经为大家讲解过T820的拍照、安全性…

为什么我学了 6 个月 Python,还是找不到工作?

在知乎上有一个特别火的问题: 为什么学了Python,我还是找不到工作? 有人说Python语言不行,有人说中国Python根本就没公司用。在大家群嘲的背后,我们来分析一下: 为什么大家都不看好Python? 学…

hadoop 日志聚集功能配置 hadoop(十一)

由图所示,本文主要是将三台机器log 进行日志聚集查看。图更加直观 1. 首先需要配置历史服务器配置,才可以配置日志聚集功能: hadoop 配置历史服务器 开启历史服务器查看 hadoop (十)-CSDN博客 2. 配置了三台服务器,hadoop22, ha…

uni-app - 弹出框

目录 1.基本介绍 2.原生uinapp 通过uni.showActionSheet实现 3.使用组件 Popup 弹出层 ③效果展示 1.基本介绍 弹出框让我们在需要时在屏幕底部弹出一个菜单,它通常用于在各种应用程序中进行选择操作。Uniapp为我们提供了基本的底部弹出框组件,但它也有…

单线圈无刷直流电机的电机驱动芯片GC1262E/S属于国产芯片可替代APX9262S/茂达

GC1262E/S 是单线圈无刷直流电机的 电机驱动器。 GC1262E/S 具有高效的直接 PWM 控制方式,它可以控制无刷直流电机转 速。它集成了最低速度限制模式、可调速度 斜率控制模式、软启动模式、风扇转速计、 锁保护、自动重启、TSD、OCP 和噪声控制模 式,噪声…

Ubuntu环境下基于libxl库文件使用C++实现对表格的操作

功能 表格不存在则创建后再进行操作创建sheet添加新的工作表在sheet中增加数据设置单元格样式 相关配置 下载地址:libxl选择 LibXL for Linux 4.2.0 i386 x64 armhf aarch64 安装配置 1,使用 tar zxvf 文件名.tar.gz 进行文件解压2,创…

【开源】基于Vue.js的森林火灾预警系统的设计和实现

项目编号: S 019 ,文末获取源码。 \color{red}{项目编号:S019,文末获取源码。} 项目编号:S019,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 系统基础模块2.3 烟…