大数据架构:Lambda Architecture
Lambda Architecture(LA)是一种大数据软件涉及框架,最早由Twitter工程师Nathan Marz提出,其目的是指导用户充分利用批处理和流计算各自的优点实现一个复杂的大数据处理系统。通过结合批处理和流计算,LA可以在延迟、吞吐量和容错之间找到平衡点。
LA主要思想:将数据流程分解为3层:批处理层,流式处理层和服务层。
一个经典的LA应用案例是 推荐系统,推荐系统在互联网行业的应用非常广泛,包括电子商务,搜索,流媒体,视频,新闻等。推荐系统最核心的是推荐算法,根据用户的兴趣特点和历史行为数据构建推荐模型,以预测用户可能感兴趣的信息和商品,进而推荐给用户。
- 在该架构中,数据一流入Kafka,之后按照不同的时间粒度导入批处理和流式处理2个系统中。批处理层拥有历史数据(通常保存到HDFS/HBase中),通常用以实现推荐模型,它以当前数据(比如最近1小时的数据)和历史数据为输入,通过特征工程,模型构建(通常是迭代算法,使用MapReduce/Spark实现)及模型评估等计算环节后,最终获得最优模型并将产生的推荐结果存储(Redis)起来。整个过程延迟较大(分钟甚至小时级别)。
- 为了解决推荐系统中的冷启动问题(新用户推荐问题),往往引入流式处理层:实时收集用户行为,基于这些行为数据通过简单的推荐算法(通常使用Strome/Spark Streaming实现)快速产生推荐结果并存储起来。
- 为了便于其他系统获得推荐结果,推荐系统往往通过服务层对外提供访问接口,比如网站后台在渲染某个访问页面时,可能从广告系统,推荐系统和内容存储系统中获取对应的结果,并返回给客户端。