大数据处理与数据工程Lambda架构简介


我们生活在一个技术时代,大数据、物联网、机器学习都已成为不可避免的现实。在当今世界,决策过程依赖于可以跨越各种数据源(例如社交媒体、日志文件、传感器数据等)的数据。虽然数据的异构性增加了多方面,但随之而来的是快速反应的需求。现代软件架构旨在满足这个不断变化的商业世界中的此类需求。
随着上述技术的激增,其他一些技术和架构也如雨后春笋般涌现。其中一种架构称为 Lambda 架构。尽管大数据提供了无与伦比的洞察力和丰富的可能性,但您也应该注意并解决一些特定问题。大数据是指大量有组织的和非结构化的数据。
Lambda 架构由 James Warren 和 Nathan Marzis 创造,融合了批处理和实时流处理技术,用于摄取、分析和查询新的历史(批处理)数据。它能够高效地处理大量数据。
本文深入探讨了与 Lambda 架构相关的概念及其优点和缺点。
 
什么是 Lambda 架构?
Lambda 架构是一种基于 lambda 演算的数据处理架构,可以大规模处理海量数据,并将大数据系统构建为一系列层。它允许通过横向扩展而不是纵向扩展来处理大量数据。
Lambda 架构是处理大量数据的新范式。它是一种可扩展且易于理解的方法,可使用批处理和流处理方法处理大量快速到达的数据。Lambda 架构用于创建高性能、可扩展、灵活和可扩展的系统。
 
Lambda 架构设计目标
以下是 lambda 架构的设计目标:

  • 低延迟
  • 数据一致性
  • 高容错
  • 改进的可扩展性

 
Lambda 架构在大数据中的应用
最近,组织必须处理的数据量激增。处理大量数据的需求增加以及从这些数据中获取洞察力的需求的增加需要新技术和架构。
近年来,随着大数据、机器学习(ML)和物联网(IOT)的普及,Lambda Architecture、Kafka、Hadoop等许多技术和架构已经进化来应对它们.
Lambda 架构是大数据计算中的一种新范式,最近很受欢迎。它是快速高效处理大量数据的绝佳选择。由于它能够平衡延迟、吞吐量和容错,因此它是开发大型数据系统的完美选择。
 
Lambda 架构的组件
Lambda 架构由以下三层组成。
  • 批处理层

批处理层通常是一个“数据湖”系统,它将所有传入的数据保存为批处理视图。批处理层通过利用不变性来保证数据一致性。因此,仅生成和存储原始数据的副本。批处理层还可以使用分布式处理系统(如 Hadoop)预先计算结果。您可以利用 Apache Hadoop 来获取数据并经济高效地存储它。
  • 服务层

服务层响应用户查询并提供对主数据集计算的低延迟访问。服务层分别从批处理和服务层接收批处理和实时视图,并公开预先计算的视图,以便可以根据需要查询数据。服务层将批处理和实时视图的结果聚合到一个数据集中。服务层支持只读数据访问和实时查询。
  • 速度(流媒体)层

速度层补充服务层并索引最新数据。它以低延迟提供近实时结果,并使用流处理实时索引传入数据,以最大限度地减少获取数据进行查询的延迟。
 
Lambda 架构的用例
以下是 Lambda 架构的一些用例:
  • 海量数据集的处理和分析
  • 日志分析解决方案
  • 流处理
  • 机器学习
  • 物联网

 
Lambda 架构如何工作?
Lambda 架构的工作原理如下:
  • 当新数据进入时,它被发送到批处理和流层以进行进一步处理。
  • 批处理层执行两个主要功能:存储信息和处理用于创建批处理视图的信息。
  • 除了索引和创建实时视图之外,速度层还通过基于新的非索引实时数据索引和创建实时视图来支持批处理和服务层。
  • 服务层存储批处理和速度层的输出,并负责索引批处理视图以提供快速访问。

 
Lambda 架构的好处
Lambda 架构的优势包括以下几点。
  • 减少延迟

服务层对原始数据进行索引,使最终用户能够查询和分析所有历史数据。考虑到批量索引需要相当长的时间,通常会有一个很长的时间段,在此期间最终用户暂时无法获得数据进行分析。速度层利用流处理技术立即索引批处理或服务层中当前不可查询的最新数据,从而减少不可分析数据的时间窗口。这增加了减少批处理/服务层延迟,即使数据可访问以进行分析所需的等待时间。
  • 更好的可扩展性

Lambda 架构没有定义要使用的技术,而是建立在分布式、横向扩展的技术之上,这些技术可以通过添加更多节点来扩展。它可以跨系统堆栈的所有层进行水平扩展。您可以在数据源、批处理层、服务层或速度层执行此操作。
  • 数据一致性

Lambda 架构消除了分布式应用程序中经常遇到的数据不一致的危险。由于网络故障,分布式应用程序中的数据可能会变得不一致。如果发生这种情况,数据的一个副本可能是最新版本,而另一个副本可能包含旧数据。由于数据是按顺序处理的(不像在分布式系统中通常并行处理数据),数据是一致的——索引过程确保批处理和速度层具有最新的数据。
  • 容错

在 Lambda 架构中,所有数据都存储在批处理层中,它建立在提供容错支持的分布式系统上。索引过程中的任何故障,无论是在服务层还是在速度层,都可以通过在批处理或服务层重新启动索引过程来处理。这样,速度层就可以继续索引最新的数据。
这种架构也有一些缺点,例如:
  • 复杂性——由于依赖于多种不同的技术,实施起来极其复杂。
  • 多个代码库——您需要为批处理和流层维护两个不同的代码库,这会使调试和维护变得困难。

 
Lambda 架构与 Kappa 架构
Kappa 架构是 Lambda 架构的一种阐释,用于流数据处理。Kappa 架构的基本假设是它允许在单个技术堆栈的帮助下同时执行实时和批处理,特别是对于分析。它建立在流架构上,该架构将输入数据序列存储在消息传递引擎(例如 Apache Kafka)中。然后该数据由流处理引擎读取并转换为可分析的格式。最后,数据保存在分析数据库中,使最终用户能够在需要时进行查询。
Kappa 架构与 Lambda 架构有相似之处,但它没有任何批处理管道。它仅由两层组成——流媒体层和服务层。您不能利用 Kappa 架构来替换 Lambda 架构。相反,它是 Lambda 架构的简化方案,您不需要批处理层。
在 Lambda 和 Kappa 架构之间做出决定时,需要权衡取舍:
如果您需要一种能够持续更新数据湖并能够从您的数据开发机器学习模型的架构,Lambda 架构是一个很好的选择。
如果您正在寻找一种在更新数据湖时更可靠且在开发机器学习模型以稳健地预测即将发生的事件时更高效的架构,在这种情况下,您应该考虑 Lambda 架构,它利用批处理层和速度层来确保减少错误并提高速度。
另一方面,如果您想使用成本较低的硬件部署大数据架构,并需要它高效运行以响应独特的运行时事件,则应考虑 Kappa 架构。
 
结论
Lambda 架构是一种基于 lambda 演算的数据处理架构,擅长高效处理海量数据。您可以使用 Hadoop 数据湖在现实世界中实现 Lambda 架构。使用 Lambda 架构的一些实际用例是雅虎和 Netflix。