何时如何利用Lambda架构处理大数据
在当前的技术环境中,许多公司都受到大数据的吸引。然而,在过去,大数据利用的是存储在Hadoop技术中的数据,并且必须处理延迟的问题。为了彻底解决这个问题,完全可以使用全新的系统来处理大量数据和高速度。
在本文中,我们将试图阐述一种简单易懂的架构,使之容易使用大数据,即Lambda架构。该设计由James Warren和Nathan Marz开发。
让我们来看一些关于Lambda架构的事实。
这种架构究竟是什么
为了做出更好的商业决策并获得洞察力,系统被设计成能够处理多样性、速度和规模。这是一种结构新颖的大数据方法,用于分析、处理和隔离这些对传统系统来说难以处理和庞大的数据。这种混合架构有助于实时支持大数据系统和批处理数据。
在这个模型中,我们可以访问历史数据和新数据。为了更好地理解过去数据的流动情况,信息被传输到数据存储中。
这种架构的基本思想是基于Lambda演算,并被称为Lambda架构。该架构专门为处理不可更改的数据集而设计,特别是为了进行操纵。
这项技术还可以解决任意计算函数的问题。一般来说,问题可以分为三个层次:
- 批处理
- 服务
- 速度
下面的图像将提供对上述层次的理解。与Hadoop类似,这个批处理层被称为“数据湖”。它还充当过去存储所有已输入数据的存档。它还便于批处理数据并帮助生成分析结果。
为了加快数据的流动和排队,引入了速度层。这个层次的功能是对实时数据进行分析计算。速度层与批处理层具有许多相似之处,因为它们都可以计算类似的分析。唯一的区别在于,分析是在最近的数据上执行的。根据数据的速度,数据可能只有一个小时的旧。
服务层将两个层次的结果组合起来产生最终结果。
当数据传输到系统时,它被分为速度层和批处理层。通过整合实时视图和批处理视图来回答查询。
批处理层担任两个关键角色。
- 管理主数据集。
- 预计算批处理视图。
批处理层的输出以批处理视图的形式显示,而速度层的输出以实时视图模式显示。然后将结果传递到服务层。这种索引在服务层进行,以便可以快速和按需地发出请求。
速度层,也称为流层,负责处理未通过批处理视图呈现的数据,因为批处理层存在的延迟。该层仅处理最新的数据,因此可以通过创建实时视图提供完整视图。
从本质上说,我们可以说在Lambda结构中,数据管道被划分为不同的层,每个层负责特定的任务。在每个层中,可以选择适当的技术。例如,在速度层,可以选择Apache Storm、Apache Spark流处理或其他技术。
在Lambda结构中,错误可以快速纠正,因为需要返回到数据的原始版本。这可以通过在这种情况下从不更改数据,而是在程序员输入不准确数据时添加数据来实现。他们可以删除然后重新计算数据。
数据湖:
这个系统的最大优点是它提供了几乎无限的内存容量和存储空间。甚至有一个能够容纳数千兆字节数据的内存数据存储器分布在所有集群中。这种类型的架构具有相当高的成本效益,因为它具有内置的容错性。
使用这个庞大的数据湖集群,可以为任何业务构建数据湖。整个业务的所有数据存储在集群中,并通过云进行共享。架构的计算能力可以用来分析集群。有了这种容错设计,可以降低成本,因为大量重复的ETL过程不会与其他系统进行接口交互。
Lambda架构的应用
世界在大数据领域不断发展。Lambda架构是建立在日志插入和相应的分析基础上的。大部分时间,日志消息都是不争议的,并以高速产生,因此它们通常被称为“快速数据”。并不存在一个硬性或快速的法律规定,规定每个日志条目都必须从数据来自的实体那里收到一个答复,因为这只是一个单向管道。
大数据的处理被划分为两个数据管道。一个管道是从各种来源大量收集和分布存储数据。然后对数据进行分析,以获得所需的精确信息以支持更好的业务决策。所采用的过程可以称为批处理管道。
简而言之,数据管道架构旨在收集数据并通过数据管道将其进行路由,以提供对业务的分析和智能的洞察。它提取和转换数据,然后将其馈送到数据库中。
采用Lambda架构进行数据处理的另一种方法是在数据流动时分析数据。这个过程被称为流式数据管道。这是在使用实时数据进行计算的过程。我们可以使用Apache Spark来完成此操作。这个方法可以将信息分成更小的批次,存储在内存中,处理数据,并最终从内存中移除数据,从而减少延迟。
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架构诞生了。
在引入此模型后,必须进行适当的计划以将数据转移到数据湖中。由于该架构专注于分析,可以使用传统的事务性数据库将数据转移到集群中。