Lambda Architecture-大数据处理系统经典架构解析

时间:2023-01-08 16:10:37

什么是LA

Lambda架构,是Nathan Marz根据自己在Twitter的分布式数据处理系统经验,提出的通用数据处理架构。

LA的提出,主要是为了满足3点需求:

  • (1) 具有容错能力的鲁棒性系统,容错能力要同时满足两点:硬件错误和人为错误。
  • (2) 能够支持的负载范围要宽。大负载和小负载都要能支持,并且满足低延迟的read/update操作。
  • (3) 系统必须要可以线性扩展。

LA架构初窥

LA的高层架构见下图。

Lambda Architecture-大数据处理系统经典架构解析
理解LA,要从5个关键点来讲(包括了3层结构)。

  • (1)所有进入系统的数据,都会被分发到批处理层(batch layer)和快速处理层(speed layer)。
  • (2)批处理层(batch layer)有两个作用:
    • 管理master的数据(raw数据):比如用HDFS来存储
    • 为数据转换为批处理视图做预处理
  • (3)服务层(serving layer)用于加载和实现数据库中的批处理视图,以便用户能查询。
  • (4)快速处理层(speed layer)用于处理新数据和服务层更新造成的高延迟补偿。
  • (5)任何query的答案,都能通过合并批处理视图实时视图的结果来获得。

讲的有点复杂,通俗化一下,LA的设计思想就是:

  • 数据分两路,一路是raw数据的存储,查询(Batch View)
  • 另一路是用大数据系统处理(数据挖掘)后的结果(Realtime View)
  • query时,结合Batch View和Realtime View,就能得到最终结果

LA架构并没有指定其中的具体组件,下面举例说明怎么借助LA来设计系统。

LA系统案例

下面是一个基于LA设计的日志分析系统。

Lambda Architecture-大数据处理系统经典架构解析

  • Flume是做LOG数据收集的系统
  • Kafka是消息队列
  • Spark做分布式计算
  • HDFS做raw数据的存储
  • Spark-SQL进行数据预处理
  • 两路数据的结果汇总到MySQL后,可以用Flask进行结果呈现

两路数据,一路经HDFS存储,到Batch View,可以获得LOG数据的原始信息。另一路经Spark深度处理/挖掘后,到Realtime View,可以获得故障信息。任何一个query,就可以将Batch View和Realtime View结合,就能得到最终结果。

LA的CAP分析

  • 一致性(Consistency),说的是每一个更新成功后,分布式系统中的所有节点,都能读到最新的信息。即所有节点相当于访问同一份内容,这样的系统就被认为是强一致性的。LA架构满足C。

  • 可用性(Availability),是每一个请求,都能得到响应。请求只需要在一定时间内返回即可。LA架构也满足A。

  • 分区容错性(Partition tolerance),是说在网络中断,消息丢失的情况下,系统照样能够工作。LA并没有做复杂的硬件架构设计,不满足P。

所以LA是一个CA系统。

参考