大数据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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • raid5和raid10区别和特性_你适合哪种恋爱测试

    raid5和raid10区别和特性_你适合哪种恋爱测试【IT168专稿】存储是目前IT产业发展的一大热点,而RAID技术是构造高性能、海量存储的基础技术,也是构建网络存储的基础技术。专家认为,磁盘阵列的性能优势得益于磁盘运行的并行性,提高设备运行并行度

  • Java猿社区—ShardingSphere-4.0.1之实现读写分离[通俗易懂]

    Java猿社区—ShardingSphere-4.0.1之实现读写分离[通俗易懂]Java猿社区—ShardingSphere-4.0.1之实现读写分离文章目录Java猿社区—ShardingSphere-4.0.1之实现读写分离技术体系背景ShardingSphere介绍注意事项ShardingShpere支持的功能数据分片分布式事务技术准备mysql安装配置POM配置读写分离——一主双从mysql配置环境sql脚本配置读写分离application.propertiesM…

  • Chrome performance_开发者模式玩游戏流畅

    Chrome performance_开发者模式玩游戏流畅主要有4方面:(对照下图)1.控制按钮。2.overview。页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求)3.火焰图。CPU堆叠追踪的可视化(左侧名称是主线程的各种事件,Network:网络请求详细情况)4.数据统计。以图表的形式汇总数据(summary:统计报表,Bottom-Up:事件时长顺序,CallTree:事件调用顺序,Eventlog:事件发生的……

    2022年10月28日
  • mysql数据库命令大全菜鸟_mysql常用命令[通俗易懂]

    mysql数据库命令大全菜鸟_mysql常用命令[通俗易懂]连接:mysql-h主机地址-u用户名-p用户密码(注:u与root可以不用加空格,其它也一样)创建授权:grantselecton数据库.*to用户名@登录主机identifiedby\”密码\”修改密码:mysqladmin-u用户名-p旧密码password新密码删除授权:revokeselect,insert,update,deleteom*.*f…

  • 最小二乘法的详细推导过程-比之前见过的推导都简单!!!

    最小二乘法的详细推导过程-比之前见过的推导都简单!!!最小二乘法发展于天文学和大地测量学领域,科学家和数学家尝试为大航海探索时期的海洋航行挑战提供解决方案。准确描述天体的行为是船舰在大海洋上航行的关键,水手不能再依靠陆上目标导航作航行。来源:我是码农,转载请保留出处和链接!本文链接:http://www.54manong.com/?id=1203(function(){vars=”_”+Ma…

  • Web 前端开发学习资料整理

    以前学习过一段时间的web前端开发,整理了一些我看过的/我认为比较好的学习资料(网站、书籍)。我只是闲来无事整理一下,如有不足,嘴下留情..毕竟分享不是一件坏事,共同学习…一、语言基础(以书和网站为主)1.HTML&CSS:(1)入门:Codeademy上的html&css课程——在线交互式编程平台,弄清楚基本概念和基本语法w3school上的HTML/CSS教程——

发表回复

您的电子邮箱地址不会被公开。

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