大数据篇:Lambda架构和Kappa架构(上)

大数据篇:Lambda架构和Kappa架构(上)

大家好,我是辰,好久没有更新文章了,今天我们来讲讲Lambda架构和Kappa架构。

Lambda架构:

在讲解之前我们先来看看这个实际的项目。情况是这样的,一个正运行着的广告精准投放业务,且拥有海量的用户访问行为。现在需要进行用户行为分析俩建立一个模型,然后根据这个模型来投放用户喜好的广告。

这时你应该想到,我们可以使用批处理架构来完成,没错,这确实也是一个很不错的选择。

可是你别忘了,批处理架构有着高延迟的不足,而互联网用户行为的数据往往可以达到Pb或Eb,甚至Zb级别。这种分析挖掘用户行为的任务,往往能耗时好几个小时甚至几天。这样的话,我们根据模型精准投放给特定用户的广告就会有一定延时了。

那我们使用流处理架构来完成是否可以?

在广告精准投放的业务需求下,只用流处理架构会造成忽略了用户的历史网站访问行为,一些异常行为可能会让我们的服务投放错误的广告。

例如,用户A的电脑暂时借给了用户B使用,而用户B浏览了一些新的网站类型(与用户A不同)。这种情况下,我们无法判断用户A实际上是否对这类型的广告感兴趣,所以不能只根据这些新的浏览记录给用户A推送广告。

这时我们应该怎样优化我们的架构呢?接下来我们讲讲今天的主题之一,Lambda架构,或许你就会有启发了。

简介:

Lambda架构(Lambda Architecture)是由Twitter工程师南森·马茨(Nathan Marz)提出的大数据处理架构。这一架构的提出基于马茨在BackType和Twitter上的分布式数据处理系统的经验。

Lambda架构使开发人员能够构建大规模分布式数据处理系统。它具有很好的灵活性和可扩展性,也对硬件故障和人为失误有很好的容错性。

Lambda架构分为三层:批处理层(Batch Layer)、速度处理层(Speed Layer)、服务层(Serving Layer)。

lambda架构图

批处理层:

批处理层存储管理主数据集(不可变的数据集)和预先批处理计算好的视图。

批处理层使用可处理大量数据的分布式处理系统预先计算结果。它通过处理所有已有历史数据来实现数据的准确性。这意味着它是基于完整的数据集来重新计算的,能够修复任何错误,然后更新现有的数据视图。输出通常存储在只读数据库中,更新则完全取代现有的预先设计好的视图。

速度层:

速度层会实时的处理inlaid的大数据。

速度层通过提供最新数据的实时视图来最小化延迟。速度层所生成的数据视图可能不如批处理层最终生成的视图那般准确或者完整,但它们几乎在收到数据后立即可用。而当同样的数据在批处理层处理完成后,在速度层的数据就可以被替代掉了。

本质上,速度层弥补了批处理层所导致的数据视图滞后。比如说,批处理层的每个人物都需要1小时才能完成,而在着1小时里,我们是无法获取批处理层最新任务给出的数据视图的。而速度层因为能够实时处理数据给出结果,就弥补了这1小时的滞后。

服务层:

所有在批处理层和速度层处理完的结果都输出存储在服务层中,服务层通过返回预先计算的数据视图或最从速度层处理构建好数据视图来响应查询。

回到刚刚的问题。我们如何既能实时分析用户新的网站浏览行为又能兼顾到用户的网站浏览行为历史呢?没错,那就是Lambda架构。

所有的用户行为数据都可以同时流入批处理层和速度层。批处理层永久保存数据并且对数据进行预处理,得到我们想要的用户行为模型写入服务层。而速度层也同时对用户行为数据进行处理,得到实时的用户行为模型。

而当”应该对用户投放什么样的广告“作为查询(Query)来到时,我们从服务层既查询服务层中保存好的批处理输出模型,也对速度层中处理的实时行为进行查询,这样我们就可以得到一个完整的用户行为历史了。

接下来我们讲讲生活中的用例

智能停车 案例分析

生活在大城市中,我们常常面临找停车位这一大难题,特别是周末,外出游玩,可能绕个几十分钟才能找到停车位。

这时,如果有一款智能停车App那不是美哉?

我们来梳理一下我们可以利用到的大数据。

首先是可用拿到各类停车场的数据,这类数据的实时性虽然不一定高,但是数据的准确性高。那么我们能不能只通过这类大数据推荐停车位呢?

我来给你举个极端的例子。假设在一个区域有三个停车场,停车场A现在只剩一个停车位了。而停车场B和C还有很多停车位。而在这个时候距离停车场A比较近的位置有10位车主在使用这套系统寻求推荐停车位。如果只通过车主和停车场的距离和停车场剩余停车位来判断的话,系统很有可能会将这个只剩下一个停车位的停车场A推荐给这10个用户。

车辆分布图

结果可想而知,只有一位幸运儿能找到停车位,剩下的9位车主需要重新寻找停车位。

如果附近又出现了,只有一个停车位的停车场呢?同理,这个系统会推荐这个停车场给剩下的9位用户。这时又能又一位幸运儿找到停车位。

如此反复循环,用户体验会非常差,甚至导致用户放弃这套系统。

那我们如何改进推荐精度呢?

你可能会想到利用这些停车场的历史数据,建立一个人工智能的预测模型,在推荐停车位的时候,不单单考虑到附近停车场的剩余车位和用户与停车场的相邻距离,还能将预测模型应用在推荐里,看看未来的一段时间内这个停车场是否有可能会被停满。

这时候我们的停车位推荐系统就成了一个基于分数(Score)来推荐停车位的系统了。

你停下来想想我们怎么应用Lambda架构提高准确度呢?

这些停车位的历史数据或者每隔半小时拿到的停车位数据,我们可以把它作为批处理数据。

我们还可以将用户的GPS数据聚集起来,这些需要每秒手机的GPS数据刚好又是速度层擅长的实时处理数据。从这些GPS数据来建立一套预测模型预测附近停车场位置的拥挤程度。

停车推荐系统流程图

服务层将从批处理层和速度层得到的分数结合后得到最高分数的停车场推荐给用户。这样利用率历史数据(停车场数据)和实时数据(用户的GPS数据)能大大提升推荐的准确性。

小结

通过这一章,我想大家应该都了解了Lambda的架构,以及相关的应用场景了。下一章,我们将讲到Kappa架构,这个架构也有很多优势及应用场景,欢迎阅读。

抱歉,来晚了

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值