在介绍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对比相关推荐

  1. 一篇文章搞懂filebeat(ELK)

    一篇文章搞懂filebeat(ELK) https://www.cnblogs.com/zsql/p/13137833.html 目录 一.filebeat是什么 1.1.filebeat和beats ...

  2. c++ 计算正弦的近似值_一篇文章搞懂正弦保真性

    本文介绍数字信号处理中"正弦保真性"这一概念,想要更好地理解本文所述内容,建议读者先阅读<一篇文章搞懂卷积>. 正弦保真性定义 一个正弦信号作为线性时不变系统的输入时, ...

  3. 一篇文章搞懂架构师的核心技能

    " 这是架构师系列的第一篇:核心技能,希望这个系列能完全揭示架构师这个职位:我先从核心技能开始,后续还有架构师之路,架构实战等架构师系列文章. 本文作者 陈睿 优知学院创始人,前携程定制旅游 ...

  4. 组件化开发实战_一篇文章搞懂什么是前端“组件化”开发

    学过网页的朋友都知道,制作一个网页离不开HTML.CSS和JavaScript技术.对于初学者来来说,掌握这3门技术就已经很不容易了,为什么前端为什么又要搞出来一个"组件化"开发的 ...

  5. reactrouter监听路由变化_一篇文章搞懂前端路由原理解析和实现方式

    在单页应用如此流行的今天,曾经令人惊叹的前端路由已经成为各大框架的基础标配,每个框架都提供了强大的路由功能,导致路由实现变的复杂. 想要搞懂路由内部实现还是有些困难的,但是如果只想了解路由实现基本原理 ...

  6. 【一篇文章搞懂】什么是分布式锁?为什么要用分布式锁?看这篇文章准没错!

    简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...

  7. 一篇文章搞懂STL中的空间配置器allocator(原创,多图,易懂)

    Table of Contents 0.引入 1.标准的空间配置器allocator 2.更为高效的空间配置器alloc 2.1----对象的构造与析构 2.1.1 对象的构造:::construct ...

  8. 一篇文章搞懂算法基础

    源码地址 https://github.com/javanan/DataStructure 目录 时间复杂度介绍 空间复杂度介绍 递归算法与非递归算法区别和转换 折半查找/二分查找算法 链表实现 反转 ...

  9. 一篇文章搞懂数据仓库:数据仓库规范设计

    目录 一.为什么要进行规范设计? 二.设计规范 - 指标 三.命名规范 - 表命名 3.1 常规表 3.2 中间表 3.3 临时表 3.4 维度表 四.开发规范 五.流程规范 一.为什么要进行规范设计 ...

最新文章

  1. Lock free queue 大比拼
  2. windows cmd命令行中 查看 修改 删除与添加环境变量
  3. JS 创建对象的七种方式
  4. 【TypeScript系列教程03】基础语法
  5. python大数据招聘信息_2017招聘大数据丨Python需求增速达174%,AI人才缺口超百万!...
  6. 《Total Commander:万能文件管理器》——第9.6节.后记
  7. 算法——贪心算法解0-1背包问题
  8. Linux 基础命令3 shell
  9. python基础学习--猜拳游戏
  10. chrome插件之——Enhanced Github和Octotree
  11. 初探开源分布式WPA破解程序moscrack
  12. 大型传统企业要不要提升自身的IT研发能力
  13. 译:在ROS上发布Odometry信息
  14. 回顾2022! 链上NFT精彩项目大盘点
  15. chinapay支付接口php,PHP/Java Bridge实现ecshop的chinapay支付接口方法(2)
  16. 什么是I/O寄存器的边际效应
  17. 认识Axure线框图组件
  18. 计算机网络课程设计小区组网,计算机网络课程设计-组建智能化小区局域网参考.doc...
  19. 杂散干扰解决办法_6种直流电源杂散干扰的成因分析及解决办法
  20. 免费、纯净、开源、无广告的全网漫画APP,可自定义32个漫画源!

热门文章

  1. ELECTRA模型精讲
  2. 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别
  3. 阿里P8架构师谈:Docker简介、组成架构、使用步骤、以及生态产品
  4. 论文浅尝 | ExCAR: 一个事件图知识增强的可解释因果推理框架
  5. 学术联赛 | 运用知识图谱技术,赋能多领域应用 ——“未来杯”AI学术联赛总决赛暨颁奖典礼圆满落幕...
  6. 论文浅尝 | 知识图谱中的链接预测:一种基于层次约束的方法
  7. 论文浅尝 | Improved Neural Relation Detection for KBQA
  8. Lodop打印设计界面生成代码带”...(省略)”
  9. Go语言入门——Go语言环境搭建
  10. 用MXNet实现mnist的生成对抗网络(GAN)