文章目录
1. INTRODUCTION
Lambda架构背后的需求是由于虽然MR能够处理大数据量,且准确性很高,但是高延迟不适用于实时计算。一个好的解决方案是通过kafka+spark组合为流模型,虽然能够提供高可用、低延迟但是准确性会有问题。
lambda架构说明
lambda架构的目标是统一批处理和流处理,并满足可拓展、高可用(对于硬件和人工的错误)需求。
2. LAMBDA ARCHITECTURE
A) BATCH LAYER
不可变数据集的特点
支持数据模型简化
批处理对于机器学习的作用
批处理的主要问题是高延迟性,所以需要速度层。
B) SPEED LAYER
速度层实时处理消息,虽然实时处理没有考虑到数据的完整性,但是弥补了批处理层的高延迟。
为了创建最新数据的实时视图(视图生产到服务层),速度层牺牲了吞吐量
,来降低延迟。当数据接收后实时视图便生成,但不如批处理层的完整或精确。这种设计背后的想法是,一旦批处理层的准确结果到达,它们就会覆盖实时视图
。
不同层次的角色分离是 Lambda 架构之美的体现。
增量计算策略
C) SERVICE LAYER
服务层负责存储批处理层和速度层的输出。
流批结果配合使用
3. LIMITATIONS OF THE TRADITIONAL LAMBDAARCHITECTURE
一开始LA的批数据层由hadoop、MapReduce组成,速度层由storm组成,服务层由ElephantDB 和 Cassandra构成。
4. A PROPOSED SOLUTION
1. 架构说明
就上面描述的,LA可能会导致编码的复杂性,debug、维护的问题。可以通过组合不同的组件来实现LA,这里通过使用kafka、spark(计算引擎)、Cassandra(视图)、Zeppelin(存储层)来优化LA架构。
之前的架构中,有两套处理系统用于处理批和流数据,批模式中用HDFS+MR处理、流中使用Storm处理,此架构中使用spark作为流批一体的计算引擎。如下图:
2. 前后架构改进对比
spark VS MR
改进的架构中
参考:
https://download.csdn.net/download/hiliang521/88881089