1.4 大数据架构:Lambda Architecture

Lambda Architecture(LA)最早是Twitter工程师Nathan Marz提出来的,它是一种大数据软件设计架构,其目的是指导用户充分利用批处理和流式计算技术各自的优点实现一个复杂的大数据处理系统。通过结合这两类计算技术,LA可以在延迟、吞吐量和容错之间找到平衡点。如图1-7所示,LA主要思想是将数据处理流程分解成三层:批处理层、流式处理层和服务层。

图1-7 Lambda Architecture大数据架构

批处理层。它的主要思想是利用分布式批处理计算,以批为单位处理数据,并产生一个经预计算产生的只读数据视图。该层将数据流看成只读的、仅支持追加操作的超大数据集。它可以一次性处理大量数据,引入复杂的计算逻辑(比如机器学习中的模型迭代计算,历史库的匹配等),其优点是吞吐率高,缺点是数据处理延迟高,即从数据产生到最终被处理完成,整个过程用时较长,通常是分钟或小时级别。

流式处理层。为了降低批处理层带来的高延迟,LA又引入了流式处理层,该层采用流式计算技术,大大降低了数据处理延迟(通常是毫秒或秒级别),其优点是数据处理延迟低,缺点是无法进行复杂的逻辑计算,得到的结果往往是近似解。

服务层。批处理层和流式处理层可以结合在一起,这样既保证数据延迟低,也能完成复杂的逻辑计算(只能保证最终一致性)。为了整合两层的计算结果,LA进一步引入服务层,它对外提供了统一的访问接口以方便用户使用。

一个经典的LA应用案例是推荐系统。在互联网行业,推荐系统被应用在各个领域,包括电子商务、视频、新闻等。推荐系统的设计目的是根据用户的兴趣特点和购买行为,向用户推荐感兴趣的信息和商品。推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助商家为其顾客购物提供完全个性化的决策支持和信息服务。推荐系统最核心的模块是推荐算法,推荐算法通常会根据用户的兴趣特点和历史行为数据构建推荐模型,以预测用户可能感兴趣的信息和商品,进而推荐给用户。

图1-8所示为一个典型的推荐系统数据流水线架构。在该架构中,数据统一流入Kafka,之后按照不同时间粒度导入批处理和流式处理两个系统中。批处理层拥有所有历史数据(通常保存到HDFS/HBase中),通常用以实现推荐模型,它以当前数据(比如最近一小时数据)和历史数据为输入,通过特征工程、模型构建(通常是迭代算法,使用MapReduce/Spark实现)及模型评估等计算环节后,最终获得最优的模型并将产生的推荐结果存储(比如Redis)起来,整个过程延迟较大(分钟甚至小时级别);为了解决推荐系统中的冷启动问题(新用户推荐问题),往往会引入流式处理层:它会实时收集用户的行为,并基于这些行为数据通过简单的推荐算法(通常使用Storm/Spark Streaming实现)快速产生推荐结果并存储起来。为了便于其他系统获取推荐结果,推荐系统往往通过服务层对外提供访问接口,比如网站后台在渲染某个访问页面时,可能从广告系统、推荐系统以及内容存储系统中获取对应的结果,并返回给客户端。

图1-8 推荐系统数据流水线