大数据 -- Lambda架构

广告精准投放

  1. 拥有海量的用户网站访问行为,需要进行用户行为分析来建立模型,然后依据该模型来投放用户喜好的广告
  2. 批处理架构:高延时
    • 互联网用户行为数据能达到PB或EB级别,甚至为ZB级别,这种分析挖掘用户行为的任务,能耗时几小时甚至几天
    • 根据模型精准投放给特定用户的广告就会有一定的延时
  3. 流处理架构:可能错误投放
    • 只用流处理架构会造成忽略用户的历史网站访问行为,一些异常行为会导致投放错误的广告
    • 场景:用户B借用了用户A访问了用户A不感兴趣的网站类型,但仅仅依据新的浏览记录无法判断用户A是否真的感兴趣

Lambda架构

  1. Lambda架构由三层系统组成:批处理层(Batch Layer)、速度处理层(Speed Layer)、服务层(Serving Layer)
  2. 批处理层:存储管理主数据集(不可变数据集) + 预先批处理计算好的视图
    • 批处理层通过处理所有的已有历史数据来实现数据的准确性
    • 基于完整的数据集来重新计算的,能够修复任何错误,然后更新现有的数据视图
    • 输出通常只存储在只读数据库中,更新则是完全取代现有的预先计算好的视图
  3. 速度处理层:实时处理新来的大数据
    • 速度处理层通过提供最新数据的实时视图最小化延迟
    • 速度处理层所生成的数据视图可能不如批处理层最终生成的视图那么准确或完整,但几乎在收到数据后就立即可用的
    • 同样的数据在批处理层处理完成后,在速度处理层的数据就可以被替代掉
    • 本质上,速度处理层弥补了批处理层所导致的数据视图滞后
  4. 服务层:响应查询
    • 所有在批处理层和速度处理层处理完的结果都输出存储在服务层中
    • 服务层通过返回批处理层预先计算的数据视图速度处理层处理构建好数据视图来响应查询

回到业务

  1. 所有新的用户行为数据都可以同时流入批处理层和速度处理层
  2. 批处理层会永久保存数据并对数据进行预处理,得到用户行为模型并写入服务层
  3. 速度处理层对新的用户行为数据进行处理,并得到实时的用户行为模型
  4. 服务层查询:应该对用户投放怎样的广告
    • 从服务层中既查询批处理的输出模型,也查询速度处理层的输出模型,这样就能构建完整地用户行为历史

Twitter Hashtag

用户所发的Twitter里面的Hashtag经常能引爆一些热搜词汇,即Most Popular Hashtags

  1. twitter4J的流处理API实时抓取Twitter推文,同时用Kafka将抓取到的数据保存并实时推送给批处理层和速度处理层
    • Apache Spark既有批处理架构也兼容流处理架构
  2. 批处理层和速度处理层在分析处理好数据后,将数据视图输出存储在服务层,使用Apache Cassandra来存储
    • Apache Cassandra将批处理层的视图数据和速度处理层的实时视图数据结合起来
0%