没有合适的资源?快使用搜索试试~ 我知道了~
Hadoop的出现让人们尝到了大数据技术的甜头,它的批处理能力已经被工业界充分认可,但是它的延迟性也一直为大家所诟病。随着各行各业的发展,越来越多的业务要求大数据系统既可以处理历史数据,又可以进行实时计算。比如电商推荐系统,当你在京东浏览商品时,京东会根据你的浏览、加车、收藏、删除等行为,实时为你推荐商品。要实现这个功能,推荐引擎首先需要根据历史数据预先离线计算推荐模型,然后从消息队列中实时拉取用户行为数据,结合两者,实时生成推荐结果。再举一个智慧交通系统的例子。在智慧交通系统中,需要对未年检、未报废等危险车辆进行实时预警,这就要求该系统预先根据历史数据删选出未年检或未报废的车辆信息库,然后将
资源推荐
资源详情
资源评论
深入浅出解析大数据深入浅出解析大数据Lambda架构架构
前言
Hadoop的出现让人们尝到了大数据技术的甜头,它的批处理能力已经被工业界充分认可,但是它的延迟性也一直为大家所诟
病。随着各行各业的发展,越来越多的业务要求大数据系统既可以处理历史数据,又可以进行实时计算。比如电商推荐系统,
当你在京东浏览商品时,京东会根据你的浏览、加车、收藏、删除等行为,实时为你推荐商品。要实现这个功能,推荐引擎首
先需要根据历史数据预先离线计算推荐模型,然后从消息队列中实时拉取用户行为数据,结合两者,实时生成推荐结果。
再举一个智慧交通系统的例子。在智慧交通系统中,需要对未年检、未报废等危险车辆进行实时预警,这就要求该系统预先根
据历史数据删选出未年检或未报废的车辆信息库,然后将道路上实时获取到的车辆信息与车辆信息库进行对比,判断有没有违
章车辆。
面对这样复杂的业务需求,开发者首先需要一个比较好的架构设计思路,在架构设计完成后再做相应的技术选型。目前业界有
几个知名的架构设计来处理此类需求,如Lambda和Summingbird,但是它们在架构的设计上又有比较大的不同。就目前而
言,Summingbird和Lambda架构都考虑到了实时计算和批处理相结合的问题,只不过Summingbird主张以统一的方式来执行
代码,有关两者的区别,大家可以自行上网了解一下,这里我们只讨论Lambda架构。
背景介绍
Lambda架构是Nathan Marz提出的一个实时大数据处理框架。Nathan Marz是著名的实时大数据处理框架Storm的作
者,Lambda架构就是其根据多年分布式大数据系统的经验总结提炼而成。
Nathan Marz 在Big Data:Principles and best practices of scalable real-time data systems一书中提到了很多实时大数据系统
的关键特性,包括容错性,健壮性,低延迟,可扩展,通用性,方便查询等,Lambda就是其根据这些特性设计的一个实时大
数据框架。需要注意的是,Lambda并不是一个具有实体的软件产品,而是一个指导大数据系统搭建的架构模型,因此,用户
可以根据自己的需要,在Lambda的三层模型中,任意集成Hadoop,Kafka,Storm,Spark,Hbase等各类大数据组件,或者
选用商用软件来构建系统。
原理讲解
大数据系统的特性
在讲大数据系统的特性之前,我们先来分析一下数据系统的本质。
Nathan Marz认为,数据系统的本质是“查询+数据”,用公式表达如下:
Query = Function ( All Data )
数据系统其实是一个提供了数据存储和数据查询功能的系统。在数据存储过程中,数据可能会发生丢失,在数据查询的过程
中,查询也可能出现错误,因此,数据系统必须能够应对这些问题,这就是我们所说的数据系统的容错性和健壮性。除此之
外,随着数据的规模越来越大,查询越来越复杂,我们希望数据系统是易于扩展的,并且是可维护的,最好查询仍然是低延迟
的,至此,我们就可以来总结一下大数据系统的关键特性了,具体如下:
a. 容错性和健壮性:对于分布式系统来说,保证人为操作不出错,程序也不出错是不可能的,因此,大数据系统必须对这样
的错误有足够的适应能力。
b. 低延迟:很多应用对于读和写操作的延时要求非常高,要求对更新和查询的响应是低延时的。
c. 横向扩容:当数据量/负载增大时,系统可以采用scale out(通过增加机器的个数),而不是scale up(通过增强机器的性
能)来维持性能。
d. 可扩展:当系统需要增加一些新功能或者新特性时,所花费的代价比较小。
e. 方便查询:数据系统的本质是“查询+数据”,因此,数据系统应具备方便、快速的数据查询功能。
f. 易于维护:系统要想做到易于维护,其关键是控制其复杂性,越是复杂的系统越容易出错、越难维护。
Lambda架构的三层模型
前面提到,Query = Function(All Data),那么大数据系统的关键问题就变成了:如何实时地在任意大数据集上进行查询?如果
单纯地对全体数据集进行在线查询,那么计算代价会很大,延迟也会很高,比如Hadoop。
Lambda的做法是将大数据系统架构拆分成了三层:Batch Layer,Speed Layer和Serving Layer。Lambda的分层结构图如图1
所示:
资源评论
weixin_38680506
- 粉丝: 4
- 资源: 927
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功