Lambda 架构 - 如何实现合并层/查询层

数据挖掘 大数据 apache-hadoop
2021-09-30 15:06:10

我正在阅读有关 lambda 架构的信息。

这说得通。我们有基于队列的数据摄取。我们有一个内存存储非常新的数据,我们有旧数据的 HDFS。

所以我们有整个数据集。在我们的系统中。非常好。

但架构图显示,合并层可以一次性查询批处理层和速度层。

怎么做?

您的批处理图层可能是地图缩减作业或 HIVE 查询。速度层查询可能是一个在 spark 上执行的 scala 程序。

现在你将如何合并这些?

有没有指导。

2个回答

在我看来,您要问的是实现 lambda 架构的主要问题。这里有一些关于如何解决它的建议。

Spark 和Spark Streaming的结合在很大程度上取代了原始的 lambda 架构(通常涉及 Hadoop 和 Storm)。 阅读此处的示例,了解如何使用 aSparkContext和单独StreamingContext生成不同 RDD的 s,一个用于批处理结果,另一个用于实时结果。

一旦你在你的系统中复制了它,你仍然需要考虑如何查询这两种类型的RDDs。最简单的情况是union他们两个:

scala> rdd1.union(rdd2).collect

或者,也许您可​​以创建一个新的DStream,类似于stateStream链接示例中的,其中一些键用于实时结果,而其他键用于批处理结果。

根据我对 lambda 架构目标的理解,您的观点是:

您的批处理图层可能是地图缩减作业或 HIVE 查询。

不是本意。批处理层并不意味着直接查询,而是提供一个服务层,可能是一个简单的键值存储,用于低延迟查询。

lambda 架构图

查看http://lambda-architecture.net/以获得更完整的解释。