一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa对比

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa对比

前言


写在前面

咳,随着数据量的暴增和数据实时性要求越来越高,以及大数据技术的发展驱动企业不断升级迭代,数据仓库架构方面也在不断演进,分别经历了以下过程:早期经典数仓架构 > 离线大数据架构 > Lambda > Kappa > 混合架构。

架构

组成 特点
经典数仓架构 关系型数据库(mysql、oracle)为主 数据量小,实时性要求低
离线大数据架构 hive,spark为主

数据量大,实时性要求低

Lambda hive,spark负责存量,strom/Flink负责实时计算 数据量大,实时性要求高
Kappa kafka、strom、Flink 多业务,多数据源,事件型数据源
混合架构




ps.表中举例若有不当,欢迎指正


000000000000000.png


正文


Lambda


Lambda架构原理


Lambda架构的核心思想是把大数据系统拆分成三层:Batch Layer,Speed Layer和Serving Layer。其中,Batch Layer负责数据集存储以及全量数据集的预查询。Speed Layer主要负责对增量数据进行计算,生成Realtime Views。Serving Layer用于响应用户的查询请求,它将Batch Views和Realtime Views的结果进行合并,得到最后的结果,返回给用户,如下图


88.png


Lambda架构的缺点


Lambda架构解决了大数据量下实时计算的问题,但架构本身也存在一定缺点。


实时与批量计算结果不一致引起的数据口径问题:因为批量和实时计算走的是两个计算框架和计算程序,算出的结果往往不同,经常看到一个数字当天看是一个数据,第二天看昨天的数据反而发生了变化。

批量计算在计算窗口内无法完成:在IOT时代,数据量级越来越大,经常发现夜间只有4、5个小时的时间窗口,已经无法完成白天20多个小时累计的数据,保证早上上班前准时出数据已成为每个大数据团队头疼的问题。

开发和维护的复杂性问题:Lambda 架构需要在两个不同的 API(application programming interface,应用程序编程接口)中对同样的业务逻辑进行两次编程:一次为批量计算的ETL系统,一次为流式计算的Streaming系统。针对同一个业务问题产生了两个代码库,各有不同的漏洞。这种系统实际上非常难维护

服务器存储大:数据仓库的典型设计,会产生大量的中间结果表,造成数据急速膨胀,加大服务器存储压力。


Kappa


Kappa架构原理


Kappa架构的核心思想包括以下三点:


用Kafka或者类似的分布式队列系统保存数据,你需要几天的数据量就保存几天。

当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。

当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。

88.png

在Kappa架构下,只有在有必要的时候才会对历史数据进行重复计算,并且实时计算和批处理过程使用的是同一份代码。


Lambda架构和Kappa架构优缺点对比


项目 Lambda Kappa
数据处理能力 可以处理超大规模的历史数据 历史数据处理的能力有限
机器开销 批处理和实时计算需一直运行,机器开销大 必要时进行全量计算,机器开销相对较小
存储开销 只需要保存一份查询结果,存储开销较小 需要存储新老实例结果,存储开销相对较大
开发、测试难度 实现两套代码,开发、测试难度较大 只需面对一个框架,开发、测试难度相对较小

运维成本

维护两套系统,运维成本大 只需维护一个框架,运维成本小


小结


Lambda 将全量历史数据和实时增量数据合并输出。

Kappa 两个流协作输出,queries每次使用最新一个流处理结果


小编有话


目前很多准实时增量批处理方案也能满足实时性需求,从稳定性和运维成本上也表现更佳。

比如kudu(存储)+impala(计算)准实时方案,可以实现千万级数据的增量更新和olap查询,性能优异。


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
2月前
|
存储 NoSQL 关系型数据库
MPP架构数据仓库使用问题之Visibility bitmap表被删除的文件信息是如何记录的
MPP架构数据仓库使用问题之Visibility bitmap表被删除的文件信息是如何记录的
|
2月前
|
存储 弹性计算 缓存
MPP架构数据仓库使用问题之ADB PG对于写入时的小文件问题该如何解决
MPP架构数据仓库使用问题之ADB PG对于写入时的小文件问题该如何解决
|
2月前
|
SQL 算法 关系型数据库
MPP架构数据仓库使用问题之ADB PG对于sort scan算子要如何生成并优化
MPP架构数据仓库使用问题之ADB PG对于sort scan算子要如何生成并优化
|
2月前
|
缓存 Cloud Native 关系型数据库
MPP架构数据仓库使用问题之Calcite 是一个什么样的类库,它主要用于什么地方
MPP架构数据仓库使用问题之Calcite 是一个什么样的类库,它主要用于什么地方
|
2月前
|
缓存 Cloud Native 关系型数据库
MPP架构数据仓库使用问题之DADI的文件异步预取机制是怎么工作的
MPP架构数据仓库使用问题之DADI的文件异步预取机制是怎么工作的
|
2月前
|
存储 缓存 安全
MPP架构数据仓库使用问题之DADI相比其他方案,在资源使用上有什么优势
MPP架构数据仓库使用问题之DADI相比其他方案,在资源使用上有什么优势
|
2月前
|
存储 NoSQL 索引
MPP架构数据仓库使用问题之在ORC文件中,String类型字段是怎么进行编码的
MPP架构数据仓库使用问题之在ORC文件中,String类型字段是怎么进行编码的
|
2月前
|
存储 缓存 固态存储
MPP架构数据仓库使用问题之ADB PG的性能优化点主要包括什么方面
MPP架构数据仓库使用问题之ADB PG的性能优化点主要包括什么方面
|
2月前
|
存储 关系型数据库 对象存储
MPP架构数据仓库使用问题之OSS的RT相比ESSD云盘较高,ADB PG这一问题是如何解决的
MPP架构数据仓库使用问题之OSS的RT相比ESSD云盘较高,ADB PG这一问题是如何解决的

热门文章

最新文章