精华内容
下载资源
问答
  • lambda 结构概述 正在构建越来越多的系统来处理大数据的容量 , 速度和多样性 ,并有望帮助获得新的见解并做出更好的业务决策。 在这里,我们将研究在单个架构解决方案中同时处理大数据的体积和速度的方法。 音量+...

    lambda 结构概述

    正在构建越来越多的系统来处理大数据的容量速度多样性 ,并有望帮助获得新的见解并做出更好的业务决策。 在这里,我们将研究在单个架构解决方案中同时处理大数据的体积和速度的方法。

    音量+速度

    Apache Hadoop为计算机集群之间的大型数据集提供了可靠的存储(HDFS)和处理系统(MapReduce)。 MapReduce是针对长时间运行的后台进程的批处理查询处理器 。 Hadoop可以处理Volume 但是要处理Velocity ,我们需要实时处理工具,以补偿批处理系统的高延迟,并随着新数据的到来以及将旧数据逐步集成到批处理框架中而连续地提供最新数据。

    因此,我们需要批处理和实时两种并行运行,并将实时计算系统(例如Apache Storm )添加到批处理框架中。 批处理和实时计算的这种体系结构组合称为Lambda体系结构λ )。

    通用Lambda

    λ具有三层:

    1. 批处理层管理主数据并预先计算批处理视图
    2. 速度层仅提供最新数据,并增加实时视图
    3. 服务层负责索引和公开视图,以便可以对其进行查询。

    下图概述了这三个层以及一些技术堆栈示例:

    lambda1

    传入的数据被分派到Batch和Speed层进行处理。 另一方面,通过合并批处理和实时视图来回答查询。 请注意,实时视图本质上是瞬态的,并且一旦通过Batch和Serving层传播,它们的数据就会被丢弃(为新数据腾出空间)。 大多数复杂性被推到了较小的“速度”层,在该层中,结果只是暂时的,这一过程称为“ 复杂性隔离 ”。 实际上,我们确实在定期清除并保持较小规模的层中隔离了并发数据更新的复杂性。

    λ技术无关 数据管道分为清晰的职责划分层,在每一层,我们可以从多种技术中进行选择。 例如,Speed层可以使用Apache Storm, Apache Spark StreamingSpring“ XD”e X treme D ata )等。

    我们如何从λ的错误中恢复? 基本上,我们重新计算视图。 如果花费的时间太长,我们只需恢复到数据的先前未损坏版本即可。 由于主数据集中的数据不可更改,我们可以这样做:数据从不更新,仅附加到(基于时间的排序)。 因此,该系统是人类容错的 :如果我们写入不良数据,则可以完全删除该数据并重新计算。

    统一Lambda

    λ的缺点是其固有的复杂性 。 要使两个已经很复杂的分布式系统保持同步,则是实现和维护方面的挑战。 人们已经开始寻找更简单的替代方法,这些替代方法将带来几乎相同的收益并解决所有问题。 基本上有三种方法:

    1. 采用纯流方法,并使用诸如Apache Samza之类的灵活框架来提供某种类型的批处理。 尽管其分布式流传输层是可插入的,但是Samza通常依赖于Apache Kafka 。 Samza的流是可重播的有序分区。 可以将Samza配置为进行批处理,即按顺序使用来自同一流分区的多个消息。
    2. 采用相反的方法,并选择一个灵活的Batch框架,该框架还允许使用Apache Spark / Spark Streaming或Storm's Trident进行微批处理,该批处理应足够小以接近实时。 从本质上讲,Spark流是一系列小批量处理的序列,可以达到低至一秒的延迟.Trident是Storm之上的高级抽象,可以处理小批量流以及进行批聚合。
    3. 使用已经结合了批处理和实时的技术堆栈,例如Spring“ XD”, SummingbirdLambdoop 。 Summingbird(“数据流的MapReduce”)是一种混合体系,其中两个批次/实时工作流可在同一时间运行,其结果合并automatically.The速度运行层上风暴和在Hadoop,Lambdoop(批次层羔羊 DA- Ha doopHBase ,Storm和Redis )还通过提供用于两种处理范例的单个API来结合批处理/实时性:

      lambdoop2

    集成的方法( 统一λ)力求通过特色的混合计算模型 在批处理和实时数据处理透明地结合起来处理大数据的数量和速度的。 有了一个统一的框架,将只需要学习一个系统,就可以维护一个系统。

    翻译自: https://www.javacodegeeks.com/2015/01/lambda-architecture-for-big-data.html

    lambda 结构概述

    展开全文
  • 大数据 Lambda 架构

    2019-10-30 15:37:16
    这篇博文将向您介绍旨在利用批处理和流处理方法的Lambda架构。我们将利用Apache Spark(Core,SQL,Streaming),Apache Parquet,Twitter Stream等实时流数据快速访问历史数据。还包括清晰的代码和直观的演示!...

    目标

    市场上的许多玩家已经建立了成功的MapReduce工作流程来每天处理以TB计的历史数据。但是谁愿意等待24小时才能获得最新的分析结果?这篇博文将向您介绍旨在利用批处理和流处理方法的Lambda架构。我们将利用Apache Spark(Core,SQL,Streaming),Apache Parquet,Twitter Stream等实时流数据快速访问历史数据。还包括清晰的代码和直观的演示!

    简史

    Apache Hadoop的丰富历史始于2002年。Hadoop由Doug Cutting创建,Doug Cutting是Apache Lucene(一个被广泛使用的文本搜索库)的创建者。Hadoop起源于Apache Nutch,一个开源的网络搜索引擎,它本身就是Lucene项目的一部分。它在10年前成为一个独立的项目。

    因此,大量客户实施了有效的基于Hadoop的M/R处理管道。现实生活中有一些很好的例子:

    • Oozie编排的工作流程每天运行并处理高达150 TB的数据以生成分析结果
    • bash管理的工作流程每天运行并处理高达8 TB的数据以生成分析结果

    现状

    商业现实已经发生了变化,所以现在更快做出的决定更有价值。除此之外,技术也在不断发展。Kafka,Storm,Trident,Samza,Spark,Flink,Parquet,Avro,Cloud providers等都是工程师和企业广泛采用的流行语。

    因此,现代基于Hadoop的M/R管道(使用Kafka,Avro和数据仓库等现代二进制格式,即Amazon Redshift,用于临时查询)可能采用以下方式:

    这看起来相当不错,但它仍然是一种传统的批处理方式,具有所有已知的缺点,主要原因是客户端的数据在批处理花费大量时间完成之前的数据处理时,新的数据已经进入而导致数据过时。

    Lambda架构

    Nathan Marz针对通用的,可扩展的和容错的数据处理架构提出了术语Lambda Architecture。它是一种旨在通过利用批处理和流处理这两者的优势来处理大量数据的数据处理架构。

    我强烈建议阅读Nathan Marz的书,因为它从提出者的角度提供了Lambda Architecture的完整表述。

    图层

    从宏观角度看,它的处理流程如下:

    所有进入系统的数据都被分配到批处理层和速度层进行处理。批处理层管理主数据集(一个不可变的,仅可扩展的原始数据集)并预先计算批处理视图。服务层对批处理视图进行索引,以便可以在低延迟的情况下进行点对点查询。速度层只处理最近的数据。任何传入的查询都必须通过合并来自批量视图和实时视图的结果来得到结果。

    焦点

    许多工程师认为Lambda Architecture是全部关于这些层次和定义的数据流的,但Nathan Marz在他的书中将重点放在其他重要方面,如:

    • 思考的分布式
    • 避免增量架构
    • 强制数据不可变
    • 创建重新计算算法

    数据的相关性

    如前所述,任何传入查询都必须通过合并来自批量视图和实时视图的结果来得到答案,因此这些视图需要可合并性。需要注意的一点是,实时视图是以前的实时视图和新数据增量的函数,因此可以使用增量算法。批处理视图是所有数据的函数,因此应该在那里使用重算算法。

    权衡

    我们生活中的每一件事都是一种折衷,而Lambda Architecture也不是一个例外。通常,我们需要解决一些主要的折衷:

    • 完全重新计算与部分重新计算
      • 在某些情况下,可以使用Bloom过滤器来避免完全重新计算
    • 重算算法与增量算法
      • 使用增量算法有很大的诱惑力,但根据指南我们必须使用重新计算算法,即使它使达到相同的结果变得更加困难。
    • 加法算法与近似算法
      • Lambda Architecture与加法算法很好地协作。因此,这是我们需要考虑使用近似算法的另一种情况,例如,HyperLogLog用于计数不同的问题等。

    实现

    有多种实现Lambda体系结构的方法,因为它对于每个层的底层解决方案都是不可知的。每一层都需要底层实现的特定功能,这可能有助于做出更好的选择并避免过度的决定:

    • 批处理层:一次写入,批量读取多次
    • 服务层:随机读取,不随机写入; 批量计算和批量写入
    • 速度层:随机读取,随机写入; 增量计算

    例如,其中一个实现(使用Kafka,Apache Hadoop,Voldemort,Twitter Storm,Cassandra)可能如下所示:

    Apache Spark

    Apache Spark可以被视为在所有Lambda体系结构层上处理的集成解决方案。它包含Spark Core,包括高层次的API,并且支持通用执行图表的优化引擎,Spark SQL为SQL和结构化数据提供处理,以及Spark Streaming,支持可扩展性,高吞吐量,容错流的实时数据流的处理。当然,使用Spark进行批量处理可能会非常昂贵,并且可能不适合所有场景和数据量,但除此之外,它是Lambda Architecture实施方案的适当匹配。

    示例应用程序

    让我们用一些捷径创建一个示例应用程序来演示Lambda架构,这个程序的主要目标是提供在#morningatlohika推文中使用的主题标签统计数据。

    源代码位于GitHub上,关于上述主题的更多视觉信息位于Slideshare上

    批处理视图

    为了简单起见,假设我们的主数据集包含自开始以来的所有推文。另外,我们实施了批量处理,创建我们业务目标所需的批处理视图,因此我们有一个预先计算的批处理视图,其中包含与#morningatlohika一起使用的所有主题标签统计信息:

     

    apache – 6 
    architecture – 12 
    aws – 3 
    java – 4 
    jeeconf – 7 
    lambda – 6 
    morningatlohika – 15 
    simpleworkflow – 14 
    spark – 5

     

    数字很容易记住,因为我简单地在相应的主题标签中使用了许多字母。

    实时视图

    想象一下,当应用程序启动并运行时,现在有人正在发送推文消息:

    “ @tmatyashovsky关于 #lambda #architecture使用 #apache #spark在 #morningatlohika的酷博客文章 ”

    在这种情况下,适当的实时视图应该包含以下hash标签和它们的统计信息(在我们的例子中仅为1,因为相应的hash标签只用了一次):

    apache – 1 
    architecture – 1 
    lambda – 1 
    morningatlohika – 1 
    spark – 1

    查询

    当客户端为了实时得到所有的Hash标签的统计结果进行查询时,我们只需要将批量视图与实时视图合并即可。所以输出应该如下所示(适当的hashtags的统计数字增加1):

     

    apache – 7 
    architecture – 13 
    aws – 3 
    java – 4 
    jeeconf – 7 
    lambda – 7 
    morningatlohika – 16 
    simpleworkflow – 14 
    spark – 6

     

    演示方案

    演示场景的简化步骤如下:

    • 通过Apache Spark 创建批处理视图(.parquet
    • 在Apache Spark中缓存批处理视图
    • 开始连接到Twitter的流应用程序
    • 关注即时#morningatlohika推文
    • 构建增量的实时视图
    • 查询,即即时合并批处理和实时视图

    技术细节

    源代码基于Apache Spark 1.6.x,即在引入结构化流式传输之前。Spark Streaming架构是纯粹的微批处理架构:

    因此,对于流媒体应用程序,我是用DSTREAM使用连接到Twitter TwitterUtils:

    JavaDStream < Status > twitterStatuses = TwitterUtils.createStream ( javaStreamingContext,createTwitterAuthorization (),new  String [ ] {twitterFilterText } );

    在每个微批处理中(使用可配置的批处理间隔),我正在执行新推文中hashtags统计的计算,并使用updateStateByKey()有状态转换更新实时视图的状态。为了简单起见,使用临时表将实时视图存储在内存中。

    查询服务反映了通过代码显式合并由DataFrame表示的批处理视图和实时视图:

     

    DataFrame realTimeView = streamingService . getRealTimeView ( ) ; 
    DataFrame batchView = servingService . getBatchView ( ) ; 
    DataFrame mergedView = realTimeView . unionAll ( batchView ) 
                                       . groupBy ( realTimeView . col ( HASH_TAG . getValue ( ) ) ) 
                                       . sum ( COUNT . getValue ( ) )
                                       . orderBy ( HASH_TAG . getValue ( ) ) ;
    
    List < Row > merged = mergedView . collectAsList ( ) ;
    
    return merged . stream ( ) 
       . map ( row - >  new  HashTagCount ( row . getString ( 0 ) , row . getLong ( 1 ) ) ) 
       . collect ( Collectors . toList ( ) ) ;
    

     

    结果

    使用简化的方法,开头提到的真正基于Hadoop的M/R管道可能会使用Apache Spark进行增强,并按以下方式查看:

    并不是后记

    正如前面提到的,Lambda Architecture有其优点和缺点,人们也划分成支持者和反对者两派。他们中的一些人说批处理视图和实时视图有很多重复的逻辑,因为他们最终需要从查询角度创建可合并的视图。所以他们创建了Kappa架构 - 简化了Lambda架构Kappa架构系统是删除了批处理系统的架构。要取代批处理,数据只需通过流式传输系统快速提供:

    但即使在这种情况下,Kappa Architecture也有使用Apache Spark的地方,例如流处理系统:

     

    展开全文
  • 大数据Lambda架构

    2020-04-22 15:58:05
    正在构建越来越多的系统来处理大数据的容量 , 速度和多样性 ,并有望帮助获得新的见解并做出更好的业务决策。 在这里,我们将研究在单个架构解决方案中同时处理大数据的体积和速度的方法。 音量+速度 Apache ...

    正在构建越来越多的系统来处理大数据的容量速度多样性 ,并有望帮助获得新的见解并做出更好的业务决策。 在这里,我们将研究在单个架构解决方案中同时处理大数据的体积和速度的方法。

    音量+速度

    Apache Hadoop为计算机集群之间的大型数据集提供了可靠的存储(HDFS)和处理系统(MapReduce)。 MapReduce是针对长期运行的后台进程的批处理查询处理器 。 Hadoop可以处理Volume 但是要处理Velocity ,我们需要实时处理工具,以补偿批处理系统的高延迟,并随着新数据的到来以及将旧数据逐渐集成到批处理框架中而连续地提供最新数据。

    因此,我们需要批处理和实时两种并行运行,并将实时计算系统(例如Apache Storm )添加到批处理框架中。 批处理和实时计算的这种体系结构组合称为Lambda体系结构λ )。

    通用Lambda

    λ具有三层:

    1. 批处理层管理主数据并预先计算批处理视图
    2. 速度层仅提供最新数据,并增加实时视图
    3. 服务层负责索引和公开视图,以便可以对其进行查询。

    下图概述了这三个层以及一些技术堆栈示例:

    lambda1

    传入的数据被分派到Batch和Speed层进行处理。 另一方面,通过合并批处理和实时视图来回答查询。 请注意,实时视图本质上是瞬态的,并且一旦通过Batch和Serving层传播,它们的数据就会被丢弃(为新数据腾出空间)。 大多数复杂性被推到了较小的“速度”层,在该层中,结果只是暂时的,这一过程称为“ 复杂性隔离 ”。 实际上,我们确实在定期清除并保持较小规模的层中隔离了并发数据更新的复杂性。

    λ技术无关 数据管道分为清晰的职责划分层,在每一层,我们可以从多种技术中进行选择。 例如,Speed层可以使用Apache Storm, Apache Spark StreamingSpring“ XD”e X treme D ata )等。

    我们如何从λ的错误中恢复? 基本上,我们重新计算视图。 如果花费的时间太长,我们将恢复到数据的先前未损坏版本。 由于主数据集中的数据不可更改,我们可以这样做:数据从不更新,仅附加到(基于时间的排序)。 因此,该系统是人类容错的 :如果我们写入不良数据,则可以完全删除该数据并重新计算。

    统一Lambda

    λ的缺点是其固有的复杂性 。 要使两个已经很复杂的分布式系统保持同步,则是实现和维护方面的挑战。 人们已经开始寻找更简单的替代方法,这些替代方法将带来几乎相同的收益并解决所有问题。 基本上有三种方法:

    1. 采用纯流方法,并使用诸如Apache Samza之类的灵活框架来提供某种类型的批处理。 尽管其分布式流传输层是可插入的,但是Samza通常依赖于Apache Kafka 。 Samza的流是可重播的有序分区。 可以将Samza配置为进行批处理,即按顺序使用来自同一流分区的多个消息。
    2. 采用相反的方法,并选择一个灵活的Batch框架,该框架还允许使用Apache Spark / Spark Streaming或Storm's Trident进行微批处理,该批处理应足够小以接近实时。 从本质上讲,Spark流是一系列小批量处理的序列,可以达到低至一秒的延迟.Trident是Storm之上的高级抽象,可以处理小批量流以及进行批聚合。
    3. 使用已经结合了批处理和实时功能的技术堆栈,例如Spring“ XD”, SummingbirdLambdoop 。 Summingbird(“ Streaming MapReduce”)是一个混合系统,其中批处理/实时工作流可以同时运行,并且结果自动合并。Speed层在Storm上运行,而Batch层在Hadoop上运行,Lambdoop( Lamb da- Ha doopHBase ,Storm和Redis )还通过提供用于两种处理范例的单个API来结合批处理/实时性:

      lambdoop2

    集成的方法( 统一λ)力求通过特色的混合计算模型 在批处理和实时数据处理透明地结合起来处理大数据的数量和速度的。 有了一个统一的框架,将只需要学习一个系统,就可以维护一个系统。

    翻译自: https://www.javacodegeeks.com/2015/01/lambda-architecture-for-big-data.html

    展开全文
  • NathanMarz的大作BigData:Principles andbestpracticesofscalablereal-...Architecture的概念,用于在大数据架构中,如何让real-time与batchjob更好地结合起来,以达成对大数据的实时处理。 传统系统的问题 在传统数据
  • 原文链接:深入理解大数据之——Lambda架构 文章目录查询函数的Monoid特性Lambda三层架构Batch LayerSpeed LayerSevering Layer数据合并组件选择总结 查询函数的Monoid特性 Lambda三层架构 Batch Layer Speed ...

    原文链接:深入理解大数据之——Lambda架构


    在这里插入图片描述

    查询函数的Monoid特性

    在这里插入图片描述

    Lambda三层架构

    在这里插入图片描述

    Batch Layer

    在这里插入图片描述

    Speed Layer

    在这里插入图片描述

    Severing Layer

    在这里插入图片描述

    数据合并

    在这里插入图片描述

    组件选择

    在这里插入图片描述

    总结

    在这里插入图片描述

    展开全文
  • Lambda架构由Storm的作者Nathan Marz提出。旨在设计出一个能满足。实时大数据系统关键特性的架构,具有高容错、低延时和可扩展等特。 Lambda架构整合离线计算...Lambda架构的主要思想就是将大数据系统构建为多个层次...
  • Hadoop的出现让人们尝到了大数据技术的甜头,它的批处理能力已经被工业界充分认可,但是它的延迟性也一直为大家所诟病。随着各行各业的发展,越来越多的业务要求大数据系统既可以处理历史数据,又可以进行实时计算。...
  • 回顾整个IT技术发展历程,它始终是以促使人类办事更加容易,生活更加方便为发展趋势的。...如今,当计算世界进入到“大数据”时代,又会出现什么样的传奇呢?为什么说近十年才是“大数据”的时代?当年比尔·盖
  • 所以就出现了hadoop的三大基础组件,分别解决大数据存储,计算,大表存储,这个阶段基本解决了大数据的计算,也即可以编写出程序,完成大数据的大规模运算,后面又出现了实时处理,第一个出现的就是storm,可以处理...
  • 大数据架构之Lambda

    2018-12-29 10:57:49
    Nathan Marz的大作Big Data: Principles and best practices of scalable real-time data systems介绍了Labmda Architecture的概念,用于在大数据架构中,如何让real-time与batch job更好地结合起来,以达成对大数据...
  • 目录1.Lambda架构背景介绍2.大数据系统的关键特性3.数据系统的本质3.1.数据的本质3.1.1.数据的特性:When & What3.1.2.数据的存储:...
  • 大数据Lambda架构

    2020-06-04 20:25:34
    Lambda架构 Lambda架构提供了一个结合实时数据和Hadoop预先计算(离线计算批处理层)的数据环境的混合平台, 以提供一个实时的数据试图。 分层架构: 批处理层(离线处理数据),实时处理层(与批处理层数据采集点击...
  • 大数据架构,从Lambda到IOTA

    千次阅读 2018-10-15 10:57:39
    在过去Lambda数据架构成为每一个公司大数据平台必备的架构,它解决了一个公司大数据批量离线处理和实时数据处理的需求。一个典型的Lambda架构如下: 数据从底层的数据源开始,经过各种各样...
  • 本文会简述大数据分析场景需要解决的技术挑战,讨论目前主流大数据架构模式及其发展。最后我们将介绍如何结合云上存储、计算组件,实现更优的通用大数据架构模式,以及该模式可以涵盖的典型数据处理场景。 大数据...
  • 原文地址:Big Data: Lambda Architecture in a nutshell原文作者:Trung Anh Dang译文出自:掘金翻译计划本文永久链接:github.c...
  • . ├── app.py <-- 服务入口 ├── DarkPortal │ ├── dark_portal.thrift <-- RPC接口声明 │ ├── connection.py <-- RPC服务配置 ├── model <-- 数据模型 │ ├── entity <...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,073
精华内容 6,829
关键字:

lambda大数据