一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa对比
在介绍Lambda和Kappa架构之前,我们先回顾一下数据仓库的发展历程: 传送门-数据仓库发展历程
写在前面
咳,随着数据量的暴增和数据实时性要求越来越高,以及大数据技术的发展驱动企业不断升级迭代,数据仓库架构方面也在不断演进,分别经历了以下过程:早期经典数仓架构 > 离线大数据架构 > Lambda > Kappa > 混合架构。
架构 | 组成 | 特点 |
---|---|---|
经典数仓架构 | 关系型数据库(mysql、oracle)为主 | 数据量小,实时性要求低 |
离线大数据架构 | hive,spark为主 | 数据量大,实时性要求低 |
Lambda | hive,spark负责存量,strom/Flink负责实时计算 | 数据量大,实时性要求高 |
Kappa | kafka、strom、Flink | 多业务,多数据源,事件型数据源 |
混合架构 |
ps.表中举例若有不当,欢迎指正
Lambda
Lambda架构原理
Lambda架构的核心思想是把大数据系统拆分成三层:Batch Layer,Speed Layer和Serving Layer。其中,Batch Layer负责数据集存储以及全量数据集的预查询。Speed Layer主要负责对增量数据进行计算,生成Realtime Views。Serving Layer用于响应用户的查询请求,它将Batch Views和Realtime Views的结果进行合并,得到最后的结果,返回给用户,如下图
Lambda架构的缺点
Lambda架构解决了大数据量下实时计算的问题,但架构本身也存在一定缺点。
- 实时与批量计算结果不一致引起的数据口径问题:因为批量和实时计算走的是两个计算框架和计算程序,算出的结果往往不同,经常看到一个数字当天看是一个数据,第二天看昨天的数据反而发生了变化。
- 批量计算在计算窗口内无法完成:在IOT时代,数据量级越来越大,经常发现夜间只有4、5个小时的时间窗口,已经无法完成白天20多个小时累计的数据,保证早上上班前准时出数据已成为每个大数据团队头疼的问题。
- 开发和维护的复杂性问题:Lambda 架构需要在两个不同的 API(application programming interface,应用程序编程接口)中对同样的业务逻辑进行两次编程:一次为批量计算的ETL系统,一次为流式计算的Streaming系统。针对同一个业务问题产生了两个代码库,各有不同的漏洞。这种系统实际上非常难维护
- 服务器存储大:数据仓库的典型设计,会产生大量的中间结果表,造成数据急速膨胀,加大服务器存储压力。
Kappa
Kappa架构原理
Kappa架构的核心思想包括以下三点:
- 用Kafka或者类似的分布式队列系统保存数据,你需要几天的数据量就保存几天。
- 当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。
- 当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。
在Kappa架构下,只有在有必要的时候才会对历史数据进行重复计算,并且实时计算和批处理过程使用的是同一份代码。
Lambda架构和Kappa架构优缺点对比
项目 | Lambda | Kappa |
---|---|---|
数据处理能力 | 可以处理超大规模的历史数据 | 历史数据处理的能力有限 |
机器开销 | 批处理和实时计算需一直运行,机器开销大 | 必要时进行全量计算,机器开销相对较小 |
存储开销 | 只需要保存一份查询结果,存储开销较小 | 需要存储新老实例结果,存储开销相对较大 |
开发、测试难度 | 实现两套代码,开发、测试难度较大 | 只需面对一个框架,开发、测试难度相对较小 |
运维成本 | 维护两套系统,运维成本大 | 只需维护一个框架,运维成本小 |
小结
- Lambda 将全量历史数据和实时增量数据合并输出。
- Kappa 两个流协作输出,queries每次使用最新一个流处理结果
小编有话
目前很多准实时增量批处理方案也能满足实时性需求,从稳定性和运维成本上也表现更佳。
比如kudu(存储)+impala(计算)准实时方案,可以实现千万级数据的增量更新和olap查询,性能优异。
数仓系列传送门:https://blog.csdn.net/weixin_39032019/category_8871528.html
一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa对比相关推荐
- 一篇文章搞懂filebeat(ELK)
一篇文章搞懂filebeat(ELK) https://www.cnblogs.com/zsql/p/13137833.html 目录 一.filebeat是什么 1.1.filebeat和beats ...
- c++ 计算正弦的近似值_一篇文章搞懂正弦保真性
本文介绍数字信号处理中"正弦保真性"这一概念,想要更好地理解本文所述内容,建议读者先阅读<一篇文章搞懂卷积>. 正弦保真性定义 一个正弦信号作为线性时不变系统的输入时, ...
- 一篇文章搞懂架构师的核心技能
" 这是架构师系列的第一篇:核心技能,希望这个系列能完全揭示架构师这个职位:我先从核心技能开始,后续还有架构师之路,架构实战等架构师系列文章. 本文作者 陈睿 优知学院创始人,前携程定制旅游 ...
- 组件化开发实战_一篇文章搞懂什么是前端“组件化”开发
学过网页的朋友都知道,制作一个网页离不开HTML.CSS和JavaScript技术.对于初学者来来说,掌握这3门技术就已经很不容易了,为什么前端为什么又要搞出来一个"组件化"开发的 ...
- reactrouter监听路由变化_一篇文章搞懂前端路由原理解析和实现方式
在单页应用如此流行的今天,曾经令人惊叹的前端路由已经成为各大框架的基础标配,每个框架都提供了强大的路由功能,导致路由实现变的复杂. 想要搞懂路由内部实现还是有些困难的,但是如果只想了解路由实现基本原理 ...
- 【一篇文章搞懂】什么是分布式锁?为什么要用分布式锁?看这篇文章准没错!
简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...
- 一篇文章搞懂STL中的空间配置器allocator(原创,多图,易懂)
Table of Contents 0.引入 1.标准的空间配置器allocator 2.更为高效的空间配置器alloc 2.1----对象的构造与析构 2.1.1 对象的构造:::construct ...
- 一篇文章搞懂算法基础
源码地址 https://github.com/javanan/DataStructure 目录 时间复杂度介绍 空间复杂度介绍 递归算法与非递归算法区别和转换 折半查找/二分查找算法 链表实现 反转 ...
- 一篇文章搞懂数据仓库:数据仓库规范设计
目录 一.为什么要进行规范设计? 二.设计规范 - 指标 三.命名规范 - 表命名 3.1 常规表 3.2 中间表 3.3 临时表 3.4 维度表 四.开发规范 五.流程规范 一.为什么要进行规范设计 ...
最新文章
- Lock free queue 大比拼
- windows cmd命令行中 查看 修改 删除与添加环境变量
- JS 创建对象的七种方式
- 【TypeScript系列教程03】基础语法
- python大数据招聘信息_2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万!...
- 《Total Commander:万能文件管理器》——第9.6节.后记
- 算法——贪心算法解0-1背包问题
- Linux 基础命令3 shell
- python基础学习--猜拳游戏
- chrome插件之——Enhanced Github和Octotree
- 初探开源分布式WPA破解程序moscrack
- 大型传统企业要不要提升自身的IT研发能力
- 译:在ROS上发布Odometry信息
- 回顾2022! 链上NFT精彩项目大盘点
- chinapay支付接口php,PHP/Java Bridge实现ecshop的chinapay支付接口方法(2)
- 什么是I/O寄存器的边际效应
- 认识Axure线框图组件
- 计算机网络课程设计小区组网,计算机网络课程设计-组建智能化小区局域网参考.doc...
- 杂散干扰解决办法_6种直流电源杂散干扰的成因分析及解决办法
- 免费、纯净、开源、无广告的全网漫画APP,可自定义32个漫画源!
热门文章
- ELECTRA模型精讲
- 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别
- 阿里P8架构师谈:Docker简介、组成架构、使用步骤、以及生态产品
- 论文浅尝 | ExCAR: 一个事件图知识增强的可解释因果推理框架
- 学术联赛 | 运用知识图谱技术,赋能多领域应用 ——“未来杯”AI学术联赛总决赛暨颁奖典礼圆满落幕...
- 论文浅尝 | 知识图谱中的链接预测:一种基于层次约束的方法
- 论文浅尝 | Improved Neural Relation Detection for KBQA
- Lodop打印设计界面生成代码带”...(省略)”
- Go语言入门——Go语言环境搭建
- 用MXNet实现mnist的生成对抗网络(GAN)