大数据基础理论——Lambda与Kappa架构的区别

Lambda 架构基本介绍

大数据基础理论——Lambda与Kappa架构的区别_第1张图片
Nathan Marz 根据他在 Backtype 和 Twitter 使用分布式数据处理系统的经验,提出了 Lambda 体系结构(LA)一词,用于通用、可扩展且容错的数据处理体系结构。

LA旨在满足对健壮系统的需求,该系统具有容错能力,既能防止硬件故障,也能防止人为错误,能够服务于广泛的工作负载和用例,并且需要低延迟的读取和更新。最终的系统应该是线性可扩展的,并且应该向外扩展而不是向上扩展。

Lambda 架构说白了就是公司的离线和实时处理技术走两条线,离线的专门做离线数据处理(例如使用hive,impala,presto,sparkSQL等各种OLAP的技术框架),实时的就专门使用实时处理技术(例如storm,sparkStreaming,flink流处理程序等)。

大数据基础理论——Lambda与Kappa架构的区别_第2张图片

数据从底层的数据源开始,经过各种各样的格式进入大数据平台,在大数据平台中经过Kafka、Flume等数据组件进行收集,然后分成两条线进行计算。一条线是进入流式计算平台(例如 Storm、Flink或者Spark Streaming),去计算实时的一些指标;另一条线进入批量数据处理离线计算平台(例如Mapreduce、Hive,Spark SQL),去计算T+1的相关业务指标,这些指标需要隔日才能看见。

大数据基础理论——Lambda与Kappa架构的区别_第3张图片

  1. 所有进入系统的数据都被分派到 batch layer 和 speed(Real-Time) layer 进行处理。
  2. batch layer 有两个功能 (i) 管理主数据集(一组不可变的,仅添加原始数据的集合) 和 (ii) 预计算批处理视图。
  3. serving layer 对批处理视图进行索引,以便能够以低延迟、特别的方式查询它们。
  4. speed layer 补偿了服务层更新的高延迟,并且只处理最近的数据。
  5. 任何传入的查询都可以通过合并批处理视图和实时视图的结果来回答。
优点与缺点
优点

Lambda 架构简单,很好的结合了离线批处理和实时流处理的优点,稳定且实时计算成本可控,离线数据易于订正。

对于实时计算部分的计算成本可控,批量处理可以用晚上的时间来整体批量计算,这样把实时计算和离线计算高峰分开,这种架构支撑了数据行业的早期发展,但是它也有一些致命缺点,并在大数据3.0时代越来越不适应数据分析业务的需求。

缺点
  • 实时与批量计算结果不一致引起的数据口径问题:因为批量和实时计算走的是两个计算框架和计算程序,算出的结果往往不同,经常看到一个数字当天看是一个数据,第二天看昨天的数据反而发生了变化。
  • 批量计算在计算窗口内无法完成:在IOT时代,数据量级越来越大,经常发现夜间只有4、5个小时的时间窗口,已经无法完成白天20多个小时累计的数据,保证早上上班前准时出数据已成为每个大数据团队头疼的问题。
  • 数据源变化需要重新开发,开发周期长:每次数据源的格式变化、业务的逻辑变化都需要针对ETL和Streaming做开发修改,整体开发周期很长,业务反应不够迅速。
  • 服务器存储大:数据仓库的典型设计,会产生大量的中间结果表,造成数据急速膨胀,加大服务器存储压力。

Kappa架构基本介绍

大数据基础理论——Lambda与Kappa架构的区别_第4张图片
针对 Lambda 架构的需要维护两套程序等以上缺点,由 LinkedIn 的 Jay Kreps 提出 Kappa 架构。
Kappa 架构的核心思想是通过改进流计算系统来解决数据全量处理的问题,使得实时计算和批处理过程使用同一套代码
此外 Kappa 架构认为只有在有必要的时候才会对历史数据进行重复计算,而如果需要重复计算时,Kappa 架构下可以启动很多个实例进行重复计算。

Kappa架构的核心思想:

大数据基础理论——Lambda与Kappa架构的区别_第5张图片

  • 用 Kafka 或者其它消息中间件系统收集各种各样的数据,需要几天的数据量就保存几天(具备保留多日数据的能力)。
  • 当需要全量重新计算时,重新起一个流计算实例,从头开始进行处理,并输出到一个新的结果存储中。
  • 当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。
优点与缺点
优点

Kappa 架构的优点在于统一了实时和离线代码,方便维护、统一了数据口径的问题,只需要维护实时处理模块,可以通过消息重放,无需离线实时数据合并。

缺点
  • 流式处理对于历史数据的高吞吐量力不从心:所有的数据都通过流式计算,即便通过加大并发实例数亦很难适应IOT时代对数据查询响应的即时性要求。
  • 开发周期长:Kappa架构下由于采集的数据格式的不统一,每次都需要开发不同的 Streaming 程序,导致开发周期长。
  • 服务器成本浪费:Kappa架构的核心原理依赖于外部高性能存储redis、hbase服务。但是这2种系统组件,又并非设计来满足全量数据存储设计,对服务器成本严重浪费。

参考资料

大数据常用的架构——Lambda和Kappa
Lambda Architecture
大数据处理之Lambda架构和Kappa架构
大数据架构如何做到流批一体?
从Lambda架构到Kappa架构再到?浅谈未来数仓架构设计~
大数据处理中的Lambda架构和Kappa架构

你可能感兴趣的:(Flink面试)