热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

从Lambda到Kappa:实时大数据架构演进

现在对于实时大数据计算有不同的架构可以选择。现在不仅仅有Lambda,着这里我将谈论两种架构,结合相关案例讨论他们的不同。实时计算系统的要求在开始讨论架构之前,我们先讨论一下在大数

现在对于实时大数据计算有不同的架构可以选择。现在不仅仅有Lambda,着这里我将谈论两种架构,结合相关案例讨论他们的不同。

实时计算系统的要求

在开始讨论架构之前,我们先讨论一下在大数据里领域实时计算系统的要求。

最明显的要求的就是数据在不断运动中,换句话说,数据是连续的、无边界的。当数据事件发生时,你就可以进行分析。如果你对当前的数据进行分析,并且需要很低的延迟,那么你很可能需要实时计算系统。

当我们讨论大数据的时候,我们经常期望数据的大小、产生速度、数据的类型是有限度的。在实时数据计算时,我们经常需要系统的伸缩性、容错性、可预测性来解决流数据不理想问题。

新数据时代新架构

为了满足这些需求产生了新的架构,换句话说需求是创新之母。
Nathan Marz提出的Lambda架构是现在进行实时处理的常见架构。它设计的目的是以低延迟处理和更新数据、支持线性扩展和容错机制。

《从Lambda到Kappa:实时大数据架构演进》 image002.png

它显著的特点是数据即进入批处理层(batch layer)也进入speed layer。
对于批处理层,数据到达时先进行存储,适时计算批处理结果视图。当然批处理计算以一定间隔触发,计算的数据范围可以从几小时到几年。

speed layer用于计算实时视图的,是批处理层的补充。

一个复杂的查询可能即从批处理视图又从实时视图中获取结果,将以最优的方式组合两类结果。批处理的计算流程可能包含更加复杂、计算成本更高的规则,数据结果质量更高,而实时视图可以给用户最新的计算结果。随着时间的流逝,实时计算的数据会过期,会被批处理计算结果取代。

这个架构的另一个好处是当用户改变计算规则时,可以重新计算历史数据。

下面,我们将讨论Kappa架构。
Kappa架构是由Jay Kreps提出。这种架构只关注流式计算,并不是取代Lambda架构,除非完全满足你的使用案例。对于这种架构,数据以流的方式被采集过来,实时层(Real-time Layer)将计算结果放入服务层(Serving Layer)以供查询。

《从Lambda到Kappa:实时大数据架构演进》 image004.png

这种思路是将实时数据处理与数据的持续从处理集成到单一流处理引擎上。对的,就是在数据流上重新处理与计算。这就要求采集的数据流可以从新从特定位置或全部快速被回放。如果计算逻辑被更改,会新起一个流式计算,将以前的数据快速回放,重新计算,将新结果保存到服务层。

这种架构试图只维护一份代码,简化Lamabda架构中既要维护批处理也要维护speed Layer层的代码。另外,结果的查询只需要在单一的服务层即可,不需要批处理与实时计算结果都得查询一遍。

这种架构的复杂性在于引入了处理流数据的一些问题,这些问题在批处理中反而比较容易解决,例如处理重复数据,交叉引用事件,维护操作顺序等。

没有解决所有问题的方案

许多实时案例适用于Lambda架构,同样kappa也有适用领域。如果流处理与批处理分析流程比较统一,用Kappa比较合适。然而在其他一些场景中,需要对整个数据集进行批量处理而且优化空间较低,使用Lambda架构性能会更好,实现也更简单。

还有一些比较复杂的场景,批处理与流处理产生不同的结果(使用不同的机器学习模型,专家系统,或者实时计算难以处理的复杂计算),可能更适合Lambda架构。


推荐阅读
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  •   上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 探索如何使用公共数据集为您的编程项目提供动力。无论您是编程新手还是有经验的开发者,本文将为您提供实用建议和资源,帮助您启动并运行一个创新的数据驱动型项目。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 深入理解K近邻分类算法:机器学习100天系列(26)
    本文详细介绍了K近邻分类算法的理论基础,探讨其工作原理、应用场景以及潜在的局限性。作为机器学习100天系列的一部分,旨在为读者提供全面且深入的理解。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
author-avatar
手机用户2502878283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有