实时数据处理和分析指南
上QQ阅读APP看书,第一时间看更新

1.5 Lambda架构——分析可能性

前文已经介绍了这种神奇的架构,那么本节就仔细研究一下该架构模式。

在底层上,Hadoop提供了大量存储,并且有HDFS和MapReduce这种形式的非常强大的处理引擎,既可以处理大量数据又可以执行种种计算。但是,它有很长的周转时间(TAT),而且是一个批处理系统,从而可以帮助解决大数据的体量问题。如果对处理速度有要求,需要寻找一种低延迟的解决方案,则必须求助于实时处理引擎,它可以快速处理最新或最近的数据,并且可在有效的时间范围内快速生成一些见解。但是除了速度和快速的TAT,还需要将更新的数据逐步集成到批处理系统中,以便对整个数据集执行深度批处理分析。因此,从本质上讲,所处的环境既需要批处理系统,也需要实时系统,这种模式的最佳体系结构组合称为Lambda架构()。图1-7描述了这种模式的高层次设计逻辑。

图1-7

解决方案既与技术无关,又与语言无关;它可以抽象为以下3层:批处理层、速度层和服务层。

输入数据被输送到批处理层和速度层,其中批处理层用于创建整个不可变主数据的预计算视图。该层主要有不可变的数据存储,具有一次写入和大量读取的功能。

速度层处理最近的数据,仅维护最近一组数据的增量视图。该层在数据可访问性方面具有随机读取和写入的功能。

问题的症结在于服务层的智能。在服务层中,来自批处理层和速度层的数据被合并,并满足查询需求,因此,可以无缝地从这两者中得到最好的结果。近实时请求是速度层的增量视图(它们具有低保留策略)中的数据来处理的,而引用旧数据的查询是由批处理层中生成的主数据视图来处理的。该层仅适用于随机读取而不能随机写入,但它确以查询、连接以及批量写入的形式来处理批量计算。

但是,Lambda架构并非是针对所有混合用例的一站式解决方案。有一些关键方面需要注意:总是认为分布式;面向故障的设计和规划;经验法则为数据是不可变的;面向故障设计。

既然已经熟悉了实时分析中流行的架构模式,那么来谈谈这一部分可能存在的用例。图1-8展示了可能应用到的高级领域和各种关键用例。

图1-8