0

Kafka 作为存储系统可以是长期数据的数据存储。它可以毫无问题地复制和分发。那么我可以从Kafka中的所有历史数据创建RDD并创建批处理视图然后将其与Spark Streaming Views结合起来吗?

4

1 回答 1

1

tl; dr 是的,但为什么呢?

根据前 Twitter 和 Lambda 架构的作者 Nathan Marz 的说法,这些是批处理层中主数据集的存储要求:

  • “有效地追加新数据。” 它必须易于添加到主数据集中。
  • “可扩展存储。” 批处理层需要“永远”保存架构曾经见过的所有数据,根据您的情况,这些数据可能高达 PB。
  • “支持并行处理。” 进入服务层的批处理视图需要将函数应用于主数据集,因此它们必须并行运行,以便在世界末日来临之前完成。
  • “可执行的不变性。” 进行检查以防止原始数据发生突变至关重要,这是您所做的一切的真实来源。
  • “可调整的存储和处理成本。” 批处理层需要让您灵活地决定如何在静态和计算中存储和压缩数据。

Kafka 满足所有这些要求,因此从技术上讲,它确实可以将主数据集存储在您的批处理层中。

然而,由 Jay Kreps(前 LinkedIn)设计的Kappa 架构比 Lambda 架构更容易使用——而且我想说在满足物联网等现代用例方面更有效。实现它所需要的只是分布式、可扩展、不可变、可配置的流,这正是 Kafka 提供的。那么为什么不这样做呢?

在 Lambda 架构的批处理层中使用 Kafka 进行数据存储是未充分利用它的能力——唯一的目的是迫使它进入一个实际上随着时间推移效率降低的架构。

于 2017-04-06T23:10:42.733 回答