kappa-architecture和lambda-architecture之间有什么区别

时间:2017-01-31 20:53:55

标签: apache-kafka batch-processing stream-processing lambda-architecture bigdata

如果Kappa-Architecture直接对流进行分析而不是将数据分成两个流,那么数据存储在哪里,就像Kafka这样的消息系统?或者它可以在数据库中重新计算?

与使用流处理引擎重新计算以进行批量分析相比,它是一个单独的批处理层吗?

2 个答案:

答案 0 :(得分:8)

  

“一个非常简单的案例需要考虑的是算法应用于   实时数据和历史数据是相同的。然后就是   显然非常有利于使用相同的代码库来处理   历史和实时数据,因此实现用例   使用Kappa架构“。”现在,用于处理的算法   历史数据和实时数据并不总是相同的。在一些   在这种情况下,批处理算法可以通过它来优化   可以访问完整的历史数据集,然后优于   实现实时算法。在这里,选择   Lambda和Kappa成为支持批量执行的选择   性能优于代码库简单“。”最后,还有更多   复杂的用例,其中甚至是实时和输出   批处理算法是不同的。例如,机器学习   批量模型的生成需要这么多时间的应用程序   和实时获得最佳结果的资源是   计算和近似该模型的更新。在这种情况下,   批处理和实时图层无法合并,而Lambda   必须使用架构“。

Quote

Lambda-Architecture

  • 单独批处理和流层
  • 更高的代码复杂性
  • 使用单独的批处理/流来提高性能
  • 更好地用于批处理和流中的不同算法
  • 使用批量计算而非数据库的数据存储更便宜

Kappa-Architecture

  • 仅蒸汽处理层
  • 更容易维护,更低的复杂性,批量和单一算法 流
  • 如果从数据库中重新计算批次
  • ,那么过多的数据会很昂贵
  • 如果从数据库或从kafka批量计算
  • ,过多的数据处理速度会慢

答案 1 :(得分:0)

您可能还想阅读讨论这两个here

的原始文章

引用原始博客帖子

  

“这两种方法之间的效率和资源之间的权衡有些难以理解。Lambda体系结构要求一直都在运行重新处理和实时处理,而我提出的方案只需要在运行第二个副本时运行您需要重新处理,但是我的建议是暂时在输出数据库中增加2倍的存储空间,并且需要一个支持大容量写入的数据库来进行重新加载,在两种情况下,重新处理的额外负载可能会平均化。如果您有很多这样的工作,它们将不会一次全部重新处理,因此在具有几十个这样的工作的共享群集上,您可能会为在任何给定时间主动进行重新处理的少数工作预算额外的百分之几的容量。 / p>      

真正的优势根本不在于效率,而在于   允许人们在以下平台上开发,测试,调试和操作系统   单个处理框架的顶部。所以,在简单的情况下   重要的是,将此方法视为Lambda的替代方法   建筑。”