Lambda架构由Storm的作者Nathan Marz提出。旨在设计出一个能满足。实时大数据系统关键特性的架构,具有高容错、低延时和可扩展等特。
Lambda架构整合离线计算和实时计算,融合不可变(Immutability,读写分离和隔离 一系列构原则,可集成Hadoop,Kafka,Storm,Spark,HBase等各类大数据组件。

Lambda架构的主要思想就是将大数据系统构建为多个层次,三层架构:批处理层、实时处理层、服务层 ,如下图

批处理层:批量处理数据,生成离线结果
实时处理层:实时处理在线数据,生成增量结果
服务层:结合离线、在线计算结果,推送上层
1.批处理层
在Lambda架构中,实现batch view = function(all data)的部分被称之为 batch layer。它承担了两个职责:

存储Master Dataset,这是一个不变的持续增长的数据集
针对这个Master Dataset进行预运算

显然,Batch Layer执行的是批量处理,例如Hadoop或者Spark支持的Map-Reduce方式。 它的执行方式可以用一段伪代码来表示
1
function runBatchLayer():
while (true):
recomputeBatchViews()
1
2
3
利用Batch Layer进行预运算的作用实际上就是将大数据变小,从而有效地利用资源,改善实时查询的性能。但这里有一个前提,

就是我们需要预先知道查询需要的数据,如此才能在Batch Layer中安排执行计划,定期对数据进行批量处理。 此外,还要求这些预运算的统计数据是支持合并(merge)的。

2实时处理层
只要batch layer完成对batch view的预计算,serving layer就会对其进行 更新。这意味着在运行预计算时进入的数据不会马上呈现到batch view中。这对于 要求完全实时的数据系统而言是不能接受的。要解决这个问题,就要通过speed layer。从对数据的处理来看,speed layer与batch layer非常相似,它们之间最大的 区别是前者只处理最近的数据,后者则要处理所有的数据。
另一个区别是为了满足最 小的延迟,speed layer并不会在同一时间读取所有的新数据,相反,它会在接收到 新数据时,更新realtime view, 而不会像batch layer那样重新运算整个view。 speed layer是一种增量的计算,而非重新运算(recomputation)。
因而,Speed Layer的作用包括:

对更新到serving layer带来的高延迟的一种补充
快速、增量的算法
最终Batch Layer会覆盖speed layer
Speed Layer的等式表达如下所示:

realtime view = function(realtime view, new data)
1
3服务层
Batch Layer通过对master dataset执行查询获得了batch view,而 Serving Layer就要负责对batch view进行操作,从而为最终的实时查询提供支撑。因此Serving Layer的职责包含:

对batch view的随机访问
更新batch view Serving Layer应该是一个专用的分布式数据库,例如Elephant
DB,以支持对batch view的加载、随机读取以及更新。

注意,它并不支持对batch view的随机写,因为随机写会为数据库引来许多复杂 性。简单的特性才能使系统变得更健壮、可预测、易配置,也易于运维。

总结下来,Lambda架构就是如下的三个等式

batch view = function(all data)
realtime view = function(realtime view, new data)
query = function(batch view . realtime view)
1
2
3
4.Lambda架构组件选型
下图给出了Lambda架构中各个层常用的组件。数据流存储可选用基于不 可变日志的分布式消息系统Kafka;Batch Layer数据集的存储可选用Hadoop的 HDFS,或者是阿里云的ODPS;Batch View的预计算可以选用MapReduce或 Spark;Batch View自身结果数据的存储可使用MySQL(查询少量的最近结果数 据),或HBase(查询大量的历史结果数据)。Speed Layer增量数据的处理可选用 Storm或Spark Streaming;Realtime View增量结果数据集为了满足实时更新的效 率,可选用Redis等内存NoSQL

5.Lambda架构组件选型原则
Lambda架构是个通用框架,各个层选型时不要局限时上面给出的组件,特 别是对于View的选型。从我对Lambda架构的实践来看,因为View是个和业务关联 性非常大的概念,View选择组件时关键是要根据业务的需求,来选择最适合查询的 组件。不同的View组件的选择要深入挖掘数据和计算自身的特点,从而选择出最适 合数据和计算自身特点的组件,同时不同的View可以选择不同的组件。

6.Lambda架构优缺点
优点:

实时:低延迟处理数据
可重计算:由于数据不可变,重新计算一样可以得到正确的结果
容错:第二点带来的,程序bug、系统问题等,可以重新计算
复杂性分离、读写分离
缺点:

开发和运维的复杂性:Lambda需要将所有的算法实现两次,一次是为批处理系统,另一次是为实时系统,还要求查询得到的是两个系统结果的合并

大数据平台Lambda架构详解的更多相关文章

  1. Others-大数据平台Lambda架构浅析(全量计算+增量计算)

    大数据平台Lambda架构浅析(全量计算+增量计算) 2016年12月23日 22:50:53 scuter_victor 阅读数:1642 标签: spark大数据lambda 更多 个人分类: 造 ...

  2. hadoop大数据基础框架技术详解

    一.什么是大数据 进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB ...

  3. CentOS6.5下如何正确下载、安装Intellij IDEA、Scala、Scala-intellij-bin插件、Scala IDE for Eclipse助推大数据开发(图文详解)

    不多说,直接上干货! 第一步:卸载CentOS中自带openjdk Centos 6.5下的OPENJDK卸载和SUN的JDK安装.环境变量配置   第二步:安装Intellij IDEA 若是3节点 ...

  4. 30个mysql千万级大数据SQL查询优化技巧详解

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  5. 【大数据系列】MapReduce详解

    MapReduce是hadoop中的一个计算框架,用来处理大数据.所谓大数据处理,即以价值为导向,对大数据加工,挖掘和优化等各种处理. MapReduce擅长处理大数据,这是由MapReduce的设计 ...

  6. 大数据入门第六天——HDFS详解

    一.概述 1.HDFS中的角色 Block数据: HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是 ...

  7. 大数据之ETL设计详解

    ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...

  8. 【大数据笔记】白话详解Zookeeper的一致性

    下面内容主要摘抄于<<Hadoop实战>>,红色高亮部分是本人添加的白话注释. Zookeeper 是一种高性能.可扩展的服务. Zookeeper 的读写速度非常快,并且读的 ...

  9. 知名大厂如何搭建大数据平台&架构

    今天我们来看一下淘宝.美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的架构,另一方面也学习大厂的工程师如何画架构图.通过大厂的这些架构图,你就会发现,不但这些知名大厂的大数据平台设计方案大同小 ...

随机推荐

  1. rabbitMQ linux安装

    1,下载 erlang (http://www.rabbitmq.com/releases/erlang/) wget http://www.rabbitmq.com/releases/erlang/ ...

  2. 【朝花夕拾】Android性能篇之(四)Apk打包

    前言 APK,即Android Package,是将android程序和资源整合在一起,形成的一个.apk文件.相信所有的Android程序员是在IDE的帮助下,完成打包轻而易举,但对打包流程真正清楚 ...

  3. Asp.Net Core与携程阿波罗(Apollo)的第一次亲密接触

    一.瞎扯点什么 1.1 阿波罗 ​ 阿波罗是希腊神话中的光明之神.文艺之神,同时也是罗马神话中的太阳神:他是光明之神,从不说谎,光明磊落,在其身上找不到黑暗,也被称作真理之神.他非常聪明,通晓世事,是 ...

  4. github访问很慢解决方案

    首先要解决的就是这个访问速度的问题: 获取Github相关网站的ip 访问https://www.ipaddress.com,拉下来,找到页面中下方的“IP Address Tools – Quick ...

  5. C# 反射,通过类名、方法名调用方法

    在 C# 代码中,有些时候只知道方法的名字(string),需要调用该方法,那么就需要用到 C# 的反射机制.下面是一个简单的 demo. using System; using System.Ref ...

  6. Android总结篇系列:Activity中几个主要函数详解

    Activity作为Android系统中四大基本组件之一,包含大量的与其他的各大组件.intent.widget以及系统各项服务等之间的交互的函数.在此,本文主要选取实际项目开发中常用的,但完全理解又 ...

  7. Linux基础知识第三讲,拷贝文件跟移动文件命令

    目录 Linux基础知识第三讲,拷贝文件跟移动文件命令 一丶常用命令 1.tree命令常用选项 2.cp复制文件命令 3.mv 命令的使用 Linux基础知识第三讲,拷贝文件跟移动文件命令 一丶常用命 ...

  8. kubernetes系列03—kubeadm安装部署K8S集群

    本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...

  9. Autorelease机制讲解

    Autorelease机制是在iOS内存管理中的一员.在MRC中,是通过调用[obj autorelease]来延迟内存释放:在ARC中,我们已经完全不需要知道Autorelease就能很好地管理好内 ...

  10. DSAPI多功能组件编程应用-图形图像篇(中)

    [DSAPI.DLL下载地址]   说到计算机上使用代码来处理各种图像特效,是一份太有挑战性的工作.以下涉及的所有图像效果均不是从网上复制的源码,而是本人试验数次并编写的,所以原理上会和网上的有所不同 ...