【问题标题】:Can I use Apache Kafka as for Batch Layer to save historical data in Lambda Architecture?我可以使用 Apache Kafka 作为批处理层在 Lambda 架构中保存历史数据吗?
【发布时间】:2017-09-01 21:39:19
【问题描述】:

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

【问题讨论】:

    标签: apache-spark apache-kafka spark-streaming batch-processing lambda-architecture


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • kafka 是否满足可调存储和处理成本的要求?它是否像 hdfs 一样具有良好的压缩性能?
    猜你喜欢
    • 2018-08-17
    • 2019-04-01
    • 2016-03-26
    • 2022-11-11
    • 1970-01-01
    • 2022-03-18
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多