Lambda Architecture

refer to

https://www.jianshu.com/p/ef543d6dc15b

http://lambda-architecture.net/

为什么要用Lambda Architecture

在大数据处理系统中,数据处理的可靠性和实时性是一对矛盾,往往不可兼得。可靠性是指在任何异常出现的情况下,数据处理都能够做到不重不丢,并且最终得到准确的结果。实时性是指数据从输入到处理完毕输出的时间间隔。一般来说,对于像Hadoop MapReduce这样的批处理系统来说,可靠性很高,而实时性很差;对于Storm这样的流式处理系统来说,则情况正好相反。

那么,有没有办法使得数据处理系统即可以做到高可靠,又可以做到低延迟呢?Lambda Architecture就是这个问题的答案。

Lambda Architecture是为了满足如下需求:

  • 系统故障或人为错误不丢数据
  • 数据分析低延迟
  • 系统具备线性扩展能力
  • 系统中很容易增加新特性

Lambda Architecture是什么

Lambda Architecture

如上图所示,Lambda Architecture由batch layer、speed layer、serving layer组成。在输入端集中接收数据,并拷贝数据,分别导入到batch layer和 speed layer。

Batch Layer

Batch layer的职责是保证数据处理的准确性和可靠性。

Batch layer首先把数据以其原始格式存储在HDFS上,以加强系统的可靠性。然后,利用Hadoop MapReduce作业对数据进行处理,并将结果保存起来(这种处理之后的数据称之为batch view)。Hadoop作业具有很好鲁棒性,在运行过程中出现各种异常时都不会损失数据。对于存储系统来说,这种批处理方式只需要随机读、追加写,不需要处理随机写、加锁、数据一致性等问题,因此大大简化了存储系统的设计。但是batch layer对数据处理的延迟是很大的,通常是几个小时到几天。

Speed Layer

Speed layer的职责是满足所有实时性处理的需求。

Speed layer通常基于Storm这样的流式计算平台,通过快速的增量式算法,以分钟级、秒级甚至毫秒级来读取、分析、保存数据。对于存储系统,由于需要支持持续的update操作,其设计要复杂的多。为了简化问题,通常使用划窗机制来保存一段时间的数据,划窗的时间一般和batch layer的数据处理一致。

流式处理往往使用内存计算,这意味着当出现异常(比如升级或工作节点异常)时,可能会导致数据的丢失或计算结果错误。然而,Lambda Architecture却不需要过多考虑这类问题,因为下一次batch layer的作业会再次处理所有数据并获得准确的结果。

Serving Layer

Serving layer的职责是将speed layer输出数据merge到batch layer输出数据上,从而得到一份完整的输出数据,并保存到诸如HBASE这样的NoSQL数据库中,以服务于在线检索应用。在batch计算结果之上meger少量实时数据,其结果同完全使用batch计算相比,具有很好的近似性。

Lambda Architecture的收益

Lambda Architecture带来了如下收益:

  • 算法可以同时分析历史数据和短期实时数据,兼顾了准确性和实时性
  • 向存储介质的随机写入大大减少了,提升了性能
  • Batch Layer(在HDFS上)保存了原始数据,可以避免人为错误造成的数据损失

当然,获得这些收益也是有代价的。Batch layer和speed layer事实上做了重复的计算。从资源的角度看,Lambda architecture消耗了更多的资源。

Lambda Architecture在产品中的应用案例

product.png

上图是一个用户画像产品的大数据处理架构的简化版本,略去了和这个主题无关的部分。可以看到这个产品采用了典型的Lambda Architecture:

  1. Bigpipe百度自研的分布式流式数据传输系统,实时传输在线系统的日志,下游可以通过订阅的方式来获取数据。Bigpipe保证数据在传输过程中不重不丢。
  2. Data Warehouse是基于HDFS的数据仓库,保存收到的所有原始数据。
  3. Batch layer:一系列的Hadoop App完成用户特征的挖掘,App之间通过HDFS来交换数据。Batch layer每天运行一次,数据的延迟是一天。
  4. Speed layer:利用百度自研的DStream实时流式计算平台,完成当天用户特征的实时挖掘。
  5. MolaDB是百度自研的一个面向在线业务的低延迟KV数据库,存储挖掘后用户特征,并为在线系统提供服务。
  6. Search Router是在线业务的检索入口,根据在线业务的检索请求查询MolaDB。
    通过采用Lambda Architecture,即实现了海量用户画像数据的实时处理,同时也最大限度的保证了系统的可靠性。


 
  1. All data entering the system is dispatched to both the batch layer and the speed layer for processing.
  2. The batch layer has two functions: (i) managing the master dataset (an immutable, append-only set of raw data), and (ii) to pre-compute the batch views.
  3. The serving layer indexes the batch views so that they can be queried in low-latency, ad-hoc way.
  4. The speed layer compensates for the high latency of updates to the serving layer and deals with recent data only.
  5. Any incoming query can be answered by merging results from batch views and real-time views.
原文地址:https://www.cnblogs.com/dadadechengzi/p/12639036.html