大数据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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 正确的-配置Tomcat环境变量

    正确的-配置Tomcat环境变量跟着配就完事,超级正确

    2022年5月27日
    39
  • 万物共享的物联网架构「建议收藏」

    万物共享的物联网架构「建议收藏」前言作为物联网领域最贴近用户的一个分支,智能家居行业在这两年持续火热。但是,除了智能家居外,物联网领域还有很多重要的组成部分:车联物流、智慧医疗、智慧社区、公共基础服务、智慧农业等。由于物联网的第一批先驱者往往都是从某个具体子行业转型过来的,对于物联网的认知也如盲人摸象,管中窥豹,很难有全局性的眼光。基于国外物联网大神DanielKarzel,HanneloreMarginean,

    2022年9月18日
    0
  • springJPA 之 QueryDSL(一)

    springJPA 之 QueryDSL(一)引言不可否认的是JPA使用是非常方便的,极简化的配置,只需要使用注解,无需任何xml的配置文件,语义简单易懂,但是,以上的一切都建立在单表查询的前提下的,我们可以使用JPA默认提供的方法,

    2022年8月4日
    5
  • BatchMD5Modify_4F-MDMB-BUTINACA

    BatchMD5Modify_4F-MDMB-BUTINACA写前bb最早是看了matlab的代码,搭了环境,demo也跑了,就再也没碰过了。之后想自己把测试和训练部分全部跑通,找了个用pytorch写的代码,看的过程中发现自己还是很多细节部分不是很清楚。虽然文章写的很一笔带过,但是看着代码会发现还是很多疑问的。代码地址:gayhub代码的requirements:UbuntuPython2.7(useAnaconda2.*here)…

    2022年9月28日
    0
  • 项目随笔

    项目随笔

    2021年8月17日
    45
  • [Matlab]绘图颜色[通俗易懂]

    [Matlab]绘图颜色[通俗易懂][Matlab]绘图颜色修改或规定Matlab中几何图形的颜色,对颜色可以有四种描述方法,分别是:颜色名称、短名称、RGB三元组、十六进制颜色代码。Matlab中较美观的颜色(RGB三元组)%%适用于Matlab的RGB颜色[0.00,0.45,0.74]//蓝[0.85,0.33,0.10]//橙红[0.93,0.69,0.13]//橙黄[0.72,0.27,1]//淡紫[0.47,0.67,0.19]//淡绿……待补充Matlab语言%%对点scat

    2022年5月31日
    47

发表回复

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

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