lanyu 2018-03-24
Lambda体系结构是一种数据处理技术,能够以高效的方式处理大量数据。这种体系结构的效率以增加的吞吐量,减少的延迟和可忽略的错误的形式变得明显。虽然我们提到数据处理,但我们基本上使用这个术语来表示高吞吐量,低延迟并针对近实时应用。这也允许开发人员在基于事件的数据处理模型中以代码逻辑或自然语言处理(NLP)的形式定义增量规则,以实现健壮性,自动化和效率并改善数据质量。此外,数据状态的任何变化都是系统事件,事实上可以给出命令,查询或预期执行增量过程作为对飞行事件的响应。
事件采购是一种使用事件进行预测以及将实时变化存储在系统中的概念,系统状态的变化,数据库中的更新或事件可以被理解为变化。例如,如果有人与网页或社交网络配置文件进行交互,则诸如页面查看,喜欢或作为好友请求添加等事件正在触发可以处理或充实的事件,并将数据存储在数据库中。
数据处理涉及事件流,大多数遵循域驱动设计的企业软件都使用流处理方法来预测基本模型的更新,并将不同的事件存储为实时数据系统中的预测来源。为了处理在系统或增量处理中发生的大量事件,Lambda体系结构通过引入三个不同的层来实现数据处理。Lambda架构由批处理层,速度层(也称为Stream层)和服务层组成。
1.批量图层
新的数据不断作为数据系统的一个源。在每种情况下,它都会同时送入批处理层和速度层。任何进入数据系统批处理层的新数据流都将在Data Lake上进行计算和处理。当数据使用数据库(如内存数据库)或长期持久数据(如基于NoSQL的存储区)存储在数据湖中时,批处理层使用它来使用MapReduce处理数据或使用机器学习(ML)对即将到来的批处理视图进行预测。
2.速度层(流层)
速度层使用在批处理层完成的事件源的结果。在批处理层中处理的数据流导致更新增量处理或MapReduce或机器学习模型,该模型由流层进一步用于处理馈送给它的新数据。速度层在基础浓缩过程中提供输出并支持服务层以减少响应查询的延迟。从名称上可以明显看出,速度层具有低延迟,因为它仅处理实时数据并且计算负载较小。
3.服务层
来自批处理视图形式的批处理层的输出和近实时视图形式的速度层的输出被转发到服务层,该服务层使用这些数据来临时处理挂起的查询。
以下是Lambda Architecture模型的基本图:
让我们将其转化为定义大数据域中的任何查询的函数式。这个等式中使用的符号被称为Lambda,而Lambda架构的名称也是由同一个等式创建的。这个功能对那些熟悉大数据分析花絮的人来说是众所周知的。
Query = λ (Complete data) = λ (live streaming data) * λ (Stored data)
该等式意味着所有与数据相关的查询都可以在Lambda体系结构中通过将来自批量形式的历史存储的结果和实时流的结果与速度层的帮助相结合来迎合。
Lambda架构的应用
可以为那些数据处理企业模型部署Lambda架构,其中:
用户查询需要使用不可变数据存储器进行专门的服务。
需要快速响应,系统应能够以新数据流的形式处理各种更新。
所存储的记录都不应该被删除,并且应该允许向数据库添加更新和新数据。
Lambda架构可被视为接近实时的数据处理架构。如上所述,它可以承受故障,并具有可扩展性。它使用批处理层和流层的功能,并不断向主存储添加新数据,同时确保现有数据保持不变。像Twitter,Netflix和雅虎这样的公司正在使用这种架构来满足服务质量标准。
Lambda架构的优点和缺点
优点
Lambda体系结构的批处理层使用容错分布式存储来管理历史数据,即使系统崩溃,也能确保错误发生的可能性极低。
这是速度和可靠性的良好平衡。
用于数据处理的容错和可扩展架构。
缺点
由于涉及综合处理,可能导致编码开销。
重新处理在某些情况下不利的每个批次循环。
使用Lambda体系结构建模的数据很难迁移或重新组织。
Kappa体系结构不能被视为Lambda体系结构的替代品,相反,它应该被看作是在批处理层的主动性能不是满足标准服务质量所必需的情况下的替代选择。该体系结构可以实时处理不同的事件。下面是Kappa体系结构的基本图表,显示了该数据处理体系结构的两层操作系统。
让我们将kappa体系结构的操作顺序转换为定义大数据域中的任何查询的函数式。
Query = K (New Data) = K (Live streaming data)
这个方程意味着所有的查询都可以通过将Kappa函数应用于速度层的实时数据流来满足。它也表示流处理发生在kappa体系结构的速度层上。
Kappa架构的应用
社交网络应用程序的某些变体,连接到基于云的监控系统的设备,物联网(IoT)使用Lambda架构的优化版本,主要使用速度层与流层结合的服务来处理数据湖上的数据。
可以为那些数据处理企业模型部署Kappa架构,其中:
将多个数据事件或查询记录在队列中,以对照分布式文件系统存储或历史记录。
事件和查询的顺序不是预先确定的。流处理平台可以随时与数据库进行交互。
它具有弹性和高度可用性,因为系统的每个节点都需要支持太字节的存储以支持复制。
上面提到的数据场景是通过耗尽Apache Kafka来处理的,该Kafka速度非常快,容错并且可以水平扩展。它允许更好的机制来管理数据流。流处理器和数据库的平衡控制使应用程序按预期执行成为可能。卡夫卡保留有序数据的持续时间更长,并通过将相似的查询链接到保留日志的适当位置来迎合相似的查询。LinkedIn和其他一些应用程序使用这种大数据处理的风格,并获得保留大量数据的好处,以迎合仅仅是彼此复制的查询。
Kappa架构的优点和缺点
优点
Kappa体系结构可用于开发在线学习者的数据系统,因此不需要批处理层。
仅当代码改变时才需要重新处理。
它可以用固定内存进行部署。
它可以用于水平可伸缩系统。
随着机器学习的实时完成,需要更少的资源。
缺点
缺少批处理层可能会在数据处理期间或在更新数据库时导致错误,这需要有异常管理器重新处理数据或对帐。
简而言之,Lambda和Kappa架构之间的选择似乎是一种折衷。如果您寻求的是一种在更新数据湖时更可靠的架构,并且可以高效地设计机器学习模型以便以可靠的方式预测即将发生的事件,那么您应该使用Lambda架构,因为它可以充分利用批处理层和以确保更少的错误和速度。另一方面,如果您希望通过使用较便宜的硬件来部署大数据架构,并要求它基于运行时发生的独特事件进行有效处理,那么请选择Kappa架构以满足您的实时数据处理需求。