何时以及如何利用 Lambda 架构处理大数据

2025年1月8日 | 阅读 10 分钟

在当前的技术环境下,众多公司都被大数据所吸引。然而,过去大数据依赖存储在 Hadoop 技术中的数据,并面临延迟问题。可以采用全新的系统来处理大量高速数据,以彻底解决这个问题。

在本文中,我们将努力使 Lambda 架构这一方便使用大数据的结构易于理解。该架构由 James Warren & Nathan Marz 设计。

让我们来看一些关于 Lambda 架构的事实。

这个架构是关于什么的?

为了做出更好的业务决策并获得洞察,系统被设计用来处理数据的多样性、速度和体量。这是为分析、处理和隔离传统系统难以处理的巨大而复杂的数据而创建的一种全新的大数据方法。混合架构有助于支持大数据的实时和批量数据处理。

在此模型中,我们可以访问历史数据和新数据。为了更好地理解过去的数据流动,信息被传输到数据存储中。

该架构背后的基本思想基于 Lambda 演算,称为 Lambda 架构。该架构专门设计用于处理不可变的数据集,特别是用于其操作的目的。

该技术还可以解决任意计算函数的问题。通常,问题可以分为三个层次。

  1. 批次
  2. 服务
  3. 速度

Lambda 架构的关键组成部分

1. 批量层 (Batch Layer)

  • 目的:存储主数据集(不可变且仅可追加)并预先计算批量视图。
  • 处理:定期处理整个数据集并生成代表数据整体且准确状态的批量视图。
  • 工具:Hadoop, Apache Spark。

2. 速度层 (Speed Layer)

  • 目的:处理实时数据以产生低延迟结果。
  • 处理:在数据到达时进行处理,提供快速、近似的结果或更新。它侧重于最新的数据。
  • 工具:Apache Storm, Apache Flink, Apache Kafka Streams。

3. 服务层 (Serving Layer)

  • 目的:通过合并批量视图和实时视图来提供查询结果。
  • 处理:针对批量视图和实时视图执行查询,并将结果合并以提供全面的输出。
  • 工具:NoSQL 数据库,如 Apache Cassandra, HBase。
When and How to Leverage Lambda Architecture in Big Data

下图将帮助您理解上述各层。与 Hadoop 类似,此批量层也称为“数据湖”。它还充当过去的档案,存储所有输入到其中的数据。它还促进数据的批量处理,并有助于生成分析结果。

为了加速数据的流式传输和排队,速度层被引入。该层的功能是对实时数据进行分析计算。速度层与批量层有许多共同之处,它也可以进行类似的分析。唯一的区别是分析是针对近期数据执行的。根据数据的速度,数据可能最多只落后一小时。

服务层作为合并两个层结果以产生最终输出的层。

当数据被传输到系统时,它会被分成速度层和批量层。查询通过实时视图和批量视图的集成来回答。

同时,批量层执行两个关键角色。

  1. 主数据集的管理。
  2. 批量视图的预计算。

批量层的输出以批量视图的形式呈现,而速度层的输出以实时视图模式显示。然后将结果传递给服务层。这种索引发生在服务层,以便可以以低延迟和按需方式进行请求。

速度层(也称为流层)负责处理未通过批量视图呈现的数据,因为批量层存在延迟。该层仅处理最新数据,因此可以通过创建实时视图来提供完整视图。

总而言之,我们可以说在 Lambda 架构中,数据管道被分成不同的层,每一层负责一项特定任务。在每一层中,都可以选择合适的技术。例如,在速度层,可以选择 Apache Storm、Apache Spark Streaming 或其他技术。

在 Lambda 架构中,错误可以被快速纠正,因为有必要返回数据的原始版本。这可以实现,因为在这种情况下,数据永远不会被更改,而是会添加。如果程序员输入了不准确的数据,他们可以删除然后重新计算数据。

数据湖

数据湖是一个集中式存储库,允许组织以其原始形式存储大量的结构化、半结构化和非结构化数据。与需要先处理和组织才能存储数据的传统数据库不同,数据湖接受原始数据,使其成为现代数据管理的高度灵活且可扩展的解决方案。

数据湖的关键特性包括其处理来自多个来源的各种数据类型的能力,例如日志文件、多媒体、传感器数据和社交媒体 feed。这种灵活性使组织能够执行各种分析,从简单的查询到复杂的机器学习任务,而无需将数据移动到不同的系统。

数据湖通常构建在 Hadoop 或云平台等分布式存储系统上,提供可扩展性和成本效益。它们是数据驱动型计划的基础,支持实时分析、批量处理和高级数据科学应用程序。然而,如果没有适当的治理,数据湖可能会变得混乱,导致“数据沼泽”,难以检索有价值的见解。

Lambda 架构的应用

Lambda 架构广泛应用于各种行业和用例,这些场景中高效处理实时和批量数据至关重要。以下是一些主要应用:

1. 实时分析和报告

  • 用例:电子商务平台、社交媒体和金融市场通常需要最新的分析来监控用户行为、销售趋势或股票价格。
  • Lambda 如何提供帮助:速度层通过在数据到达时进行处理来提供即时见解,而批量层确保了长期的准确性和历史分析。

2. 欺诈检测

  • 用例:银行和金融机构需要实时检测和阻止欺诈交易,以保护客户并降低损失。
  • Lambda 如何提供帮助:速度层可以快速识别可疑活动,从而实现即时警报,而批量层提供更详细的分析以改进欺诈检测算法。

3. 个性化和推荐引擎

  • 用例:在线零售商、流媒体服务和内容平台根据用户的行为和偏好来个性化用户体验。
  • Lambda 如何提供帮助:速度层根据实时交互提供个性化推荐,而批量层处理历史数据以提高推荐准确性。

4. 监控和异常检测

  • 用例:IT 基础设施、制造过程和网络安全系统需要持续监控以检测异常或故障。
  • Lambda 如何提供帮助:速度层允许实时监控和对异常的即时响应,而批量层提供全面的分析以确定根本原因和优化系统。

5. 物联网数据处理

  • 用例:智能家居、工业自动化和医疗保健中的连接设备生成需要实时处理的连续数据流。
  • Lambda 如何提供帮助:速度层在传感器数据生成时进行处理,以实现即时决策,而批量层随时间聚合数据以进行趋势分析和预测性维护。

Lambda 架构的优点

Lambda 架构提供了多种优势,但最显著的优势是不可变性、容错性,以及用于执行重新计算或预计算。

该架构最显著的优点将在以下段落中进行描述。

  • 在此模型中,数据以其原始格式存储。通过生成基本的批量视图和速度视图,这有助于开发新的用户案例分析以及全新的数据处理算法。这是传统数据仓库的巨大优势。过去,数据模式必须更新才能适应新应用程序,这是一个漫长的过程。
  • 重新计算是此设计的一个附加特性。这种容错性可以轻松修复。如果数据湖中有大量数据,则很可能发生数据损坏和丢失,但这是无法完全避免的。该设计允许回滚、刷新数据和重新计算数据以纠正这些错误。
  • 该架构最重视保持输入数据的原始形式。模型的数据转换是结构的一个重要附加方面。这允许跟踪 MapReduce 工作流。MapReduce 对整个数据执行批量处理。数据在每个步骤中单独调试。流式数据处理面临的主要问题是重新处理问题。使用此方法,输入数据驱动输出。

简而言之,此设计的优点是:

  • 容忍人为错误
  • 容忍硬件故障。

Lambda 架构的缺点

为准备构建数据湖的企业选择 Lambda 框架也可能存在一些缺点,尤其是在某些方面没有被考虑到的情况下。其中一些要点列在以下段落中。

  • 该结构的各个层会增加其复杂性。层之间的同步可能成本高昂。因此,必须谨慎处理。
  • 由于速度层和批量层等不同分散的层,维护和支持变得困难。
  • 许多新技术正在涌现,可以帮助构建 Lambda 架构。然而,找到精通这些新技术的人并不容易。
  • 在开源技术上实现此模型并不容易,而在云上实现时问题会变得更糟。
  • 维护架构中的代码可能具有挑战性,因为它需要在分布式环境中生成类似的结果。
  • 在 Hadoop 和 Storm 等大数据框架中进行编码也很困难。

Lambda 架构的统一方法

如上所述,Lambda 架构的主要缺点之一是其复杂性。持续的维护和安装很麻烦,因为必须同步两个分布式系统。为了克服这些问题,有三种不同的方法,我们将在下面讨论。

  • 采用纯流式模型和灵活的框架。在这种情况下,Apache Samza 可以是一个理想的选择。它是一个可扩展的分布式流层,可用于执行批量处理。
  • 也可以考虑与上述讨论不同的方法。选择灵活的批量是一个选项。确保选择小批量,使其接近实时批量。在这种情况下,可以使用 Apache Stark 或 Storm 的 Trident。
  • 使用堆栈技术将实时和批量处理结合起来是另一种可行的方法。在这种情况下,Lambda Loop 和 SummingBird 可以是可行的选择。由于 SummingBird 是一个混合系统,它会将即时数据和批量数据合并。Lambda Loop 也使用相同的方法。

下图将帮助您更好地理解上述问题。

统一方法通过利用混合计算模型来解决大数据的体量和速度问题。该模型可以轻松地将即时数据和批量数据混合在一起。

架构概述

大数据系统通常处理原始和半结构化数据。当今的组织需要能够同时处理批量数据和实时数据的系统。Lambda 架构能够处理这两种过程。同时,它可以在过程中建立不可变性。

该结构遵循一套严格的指南,并且是技术的拥护者。任何技术都可以集成到其中以完成任务,因为它由不同的层组成。现成的云组件是可用的,并且可以使用 Lambda 结构进行使用。

该架构可以被描述为一个可插拔的系统,可以在需要某个过程时使用。许多数据源可以根据需求插入或拔出。

实时工作示例

Lambda 架构在许多应用程序中得到了证明。以下是一些正在工作的示例:

  • Twitter 和 Groupon 有许多应用程序。Lambda 架构可用于理解推文的含义,并用于执行情感分析。
  • Crashlytics:这里,它专门关注移动分析,用于生成重要的分析结果。
  • Stack Overflow 是一个非常知名和受欢迎的论坛,拥有大量用户。这是一个人们可以提问和获得解决方案的地方。在此论坛中,批量视图用于分析投票结果。

结论

自古以来,大数据技术就广受欢迎。但当涉及到 Google 或 Facebook 等公司的需求时,现有的技术并不适合业务需求。为了满足他们的需求,需要一个标准化和灵活的架构,这导致了 Lambda 架构的创建。

在此模型引入之后,必须进行适当的规划才能将数据传输到数据湖。由于该架构侧重于分析,因此可以利用传统的事务数据库将数据传输到集群。

每年,越来越多的公司正在转向大数据。