大数据Lambda架构详解

大数据Lambda架构详解Lambda架构是NathanMarz提出的一个实时大数据处理框架。NathanMarz是著名的实时大数据处理框架Storm的作者,Lambda架构就是其根据多年分布式大数据系统的经验总结提炼而成。NathanMarz在BigData:Principlesandbestpracticesofscalablereal-timedatasystems一书中提到了很多实时大数据系统的关键特性,包括容错性,健壮性,低延迟,可扩展,通用性,方便查询等,Lambda就是其根据这些特性设计的一

大家好,又见面了,我是你们的朋友全栈君。

1. 前言

随着互联网技术的发展,每一个业务都与数据息息相关,如搜索,推荐。这些业务有一个共同的特点是连接用户和数据。随着数据量的不断增加,对大数据的处理的要求也就会越来越高,在这期间出现了很多大数据的处理平台和工具,如Hadoop,Storm等。在不同的应用场景中也有不一样的数据架构,那么什么是大数据架构,引用如下的定义:

A big data architecture is designed to handle the ingestion, processing, and analysis of data that is too large or complex for traditional database systems.

从上述的定义来说,大数据架构主要是完成数据采集,处理以及分析的数据系统,其中数据系统提供了数据存储和数据查询的功能。对于一个完备的数据系统,需要具备一些关键的特性,如:容错性和健壮性,扩展性等等。单纯利用大数据处理平台很难同时完成数据的存储和数据的查询操作,以大家熟悉的Hadoop为例,Hadoop是一个功能强大的批处理工具,但是无法在低延迟的情况下完成数据的查询工作。

Lambda架构正在在这种需求下被设计出来的一个实时大数据框架,需要注意的是,Lambda并不是一个具有实体的软件产品,而是一个指导大数据系统搭建的架构模型。Lambda架构应具备实时大数据系统所应具备的一些关键特性,如容错性,健壮性,低延迟,可扩展,通用性,方便查询等。

2. Lambda架构

2.1. Lambda架构定义

Lambda架构是由Nathan Marz在2011年提出的一个实时大数据处理框架,用于处理大数据批量离线处理和实时数据处理的需求。引用Wikipedia对Lambda架构的定义:

Lambda architecture is a data-processing architecture designed to handle massive quantities of data by taking advantage of both batch and stream-processing methods.

从定义看出,Lambda架构充分利用了批处理和实时处理两个流程。

2.2. Lambda架构

Lambda架构的整体架构图如下所示(来源参考文献1):
在这里插入图片描述
在Lambda架构中将系统架构拆分为三层,分别为:Batch Layer,Speed Layer和Serving Layer。其中,Batch Layer用于批量处理全部的数据,Speed Layer用于处理增量的数据,在Serving Layer,综合Batch Layer生成的Batch Views和Speed Layer生成的Realtime Views,提供给用户查询最终的结果。

综上所述,Lambda架构通过Batch Layer和Speed Layer的两层设计实现了在一个系统内同时支持实时和批处理的数据处理;在查询阶段,通过Serving Layer在逻辑上统一了两种数据源的接口。

2.2.1. Batch Layer

Lambda架构的目标是同时支持大数据批量离线处理和实时数据处理,在其分层的设计下,Batch Layer通过预计算对全量数据进行批处理,生成不同的Batch Views,其中,预计算的流程会根据不同的业务设置不同的时间间隔。Batch Layer层的结构图下所示:

在这里插入图片描述

2.2.2. Speed Layer

Speed Layer用于支撑Lambda架构的实时数据处理流程,Batch Layer每次都是处理全量的数据,由于需要处理的数据量较大,每次构建Batch Views需要花费大量时间,这就导致在构建的过程中无法感知数据的变化,Speed Layer专门用于对数据变化的监测,用来处理增量的实时数据,对数据计算生成Realtime Views。Speed Layer层的结构图下所示:

在这里插入图片描述

2.2.3. Serving Layer

Serving Layer用于响应用户的查询请求,并将Batch Views和Realtime Views的结果进行了合并,得到最后的结果,返回给用户。具体过程如下图所示:

在这里插入图片描述

2.3. Lambda架构实例

由Lambda的定义可知,Lambda架构只是一个实时大数据处理框架,并不是一个大数据处理工具。在依照Lambda架构的实际设计中,可以根据实际的需求选择合适的工具或者组建,从参考文献3中总结到如下的图:
在这里插入图片描述
由上图可以看到,Spark Streaming/Storm/Flink可以用来构建Speed Layer,Spark/MapReduce可以用于构建Batch Layer,HBase/Redis/MongoDB可以用于存储。

3. 总结

Lambda架构是大数据中一个非常重要的架构设计,通过分层设计的思想,分别处理批量数据和增量数据,以满足实时性查询的要求。

参考文章

  1. 技术|深入浅出解析大数据Lambda架构
  2. Questioning the Lambda Architecture
  3. Architectures_BigData
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152825.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [非官方]ArcGIS10.2 for Desktop扩展工具包——XTools Pro

    [非官方]ArcGIS10.2 for Desktop扩展工具包——XTools Pro

    2021年12月14日
  • 查看TensorFlow版本_查看tensorflow编译版本

    查看TensorFlow版本_查看tensorflow编译版本由于tensorflow版本不同,可能一些函数的调用也有变换,这时候可能需要查看tensorflow版本,可以在终端输入查询命令如下:pythonimporttensorflowastftf.__version__查询tensorflow安装路径为:tf.__path__查询结果如下:

    2022年4月19日
  • python画爱心代码大全_python爱心代码制作

    python画爱心代码大全_python爱心代码制作程序员在爱情方式上表达上展现的多种多样,其中现在大火的用编程去编写个表白内容,最受欢迎了,今天小编也尝试了下,一起来看看吧~准备工具:python3画爱心实施步骤:打开编译器,写上code,代码如下:fromturtleimport*pensize(1)pencolor(‘red’)fillcolor(‘pink’)speed(5)up()goto(-30,100)down()begin_f…

    2022年9月7日
  • 谷歌浏览器搜索使用指南[通俗易懂]

    谷歌浏览器搜索使用指南[通俗易懂]谷歌浏览器使用指南下载谷歌浏览器使用浏览器时遇到的问题对谷歌浏览器进行配置下载谷歌浏览器可以在谷歌浏览器官网进行下载,网址:https://www.google.cn/intl/zh-CN/chrome/在腾讯电脑管家,进行下载使用浏览器时遇到的问题搜索引擎我们这里先选用百度搜索引擎,如果想使用其他搜索引擎,更换其他的网址即可。1.当你使用谷歌浏览器时你会发现,根本上不了网2.这个时候你不要惊慌,自己在网址框中手动输入:https://www.baidu.com/即可进行上网对谷

    2022年9月10日
  • sql中ddl和dml(数据库表与视图的区别)

    DDL和DML的定义和区别1、DML(DataManipulationLanguage)数据操纵语言:适用范围:对数据库中的数据进行一些简单操作,如insert,delete,update,select等.对表(索引和序列)中数据操作就是DML,对数据库中的(表,索引,序列,同义词等)都是DDL操作 2、DDL(DataDefinitionLanguage)数据定义语言:适用范围:对数据库…

    2022年4月17日
  • MySQL中的float和decimal类型有什么区别

    MySQL中的float和decimal类型有什么区别

    2021年11月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号