Lambda架构 vs Kappa架构
来源:互联网 发布:java接口实现文件上传 编辑:程序博客网 时间:2024/06/04 19:03
- Lambda 架构
Lambda 架构由Storm的作者Nathan Marz提出,其设计目的在于提供一个能满足大数据系统关键特性的架构,包括高容错、低延迟、可扩展等。其整合离线计算与实时计算,融合不可变性、读写分离和复杂性隔离等原则,可集成Hadoop, Kafka, Spark,Storm等各类大数据组件。
Lambda 架构可分解为三层Layer,即Batch Layer, Real-Time(Speed) Layer和Serving Layer。
- Batch Layer : 存储数据集,在数据集上预先计算查询函数,并构建查询所对应的View。Batch Layer可以很好的处理离线数据,但有很多场景数据是不断实时生成且需要实时查询处理,对于这情况, Speed Layer更为适合。
- Speed Layer : Batch Layer处理的是全体数据集,而Speed Layer处理的是最近的增量数据流。Speed Layer为了效率,在接收到新的数据后会不断更新Real-time View,而Batch Layer是根据全体离线数据集直接得到Batch View。
- Serving Layer : Serving Layer用于合并Batch View和Real-time View中的结果数据集到最终数据集。
一个典型的Lambda架构如下,
这种架构主要面向的场景是逻辑比较复杂同时又希望延迟比较低的异步处理程序,比如搜索引擎、推荐引擎等。
系统从一个流中读取被我们定义为不可变的数据,分别灌入实时系统如Storm和批处理系统如Hadoop,然后各自输出自己的结果,这些结果会在查询端进行合并。当然,这种系统也可有很多变种,比如上图中的Kafka也可替换成其他的分布式队列,Storm也可以替换成其他的流式计算引擎。
- Kappa 架构
Kappa 架构是LinkedIn的Jay Kreps结合实际经验和个人体会,针对Lambda架构进行深度剖析,分析其优缺点并采用的替代方案。Lambda 架构的一个很明显的问题是需要维护两套分别跑在批处理和实时计算系统上面的代码,而且这两套代码得产出一模一样的结果。因此对于设计这类系统的人来讲,要面对的问题是:为什么我们不能改进流计算系统让它能处理这些问题?为什么不能让流系统来解决数据全量处理的问题?流计算天然的分布式特性注定其扩展性比较好,能否加大并发量来处理海量的历史数据?基于种种问题的考虑,Jay提出了Kappa这种替代方案。
那如何用流计算系统对全量数据进行重新计算,步骤如下:
1、用Kafka或类似的分布式队列保存数据,需要几天数据量就保存几天。
2、当需要全量计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个结果存储中。
3、当新的实例完成后,停止老的流计算实例,并把老的一引起结果删除。
一个典型的Kappa架构如下,
1 0
- Lambda架构 vs Kappa架构
- Lambda架构 vs Kappa架构
- Lambda架构与Kappa架构
- Lambda vs Kappa
- Kappa:比Lambda更好更灵活的实时处理架构
- Kappa:比Lambda更好更灵活的实时处理架构
- Lambda架构
- Lambda架构
- Lambda架构
- 大数据Lambda架构
- Lambda架构简介
- banq 质疑Lambda架构
- 大数据Lambda架构
- 数据系统架构——Lambda architecture(Lambda架构)
- 框架vs.架构
- 微服务架构 vs. SOA架构
- 用于实时大数据处理的Lambda架构
- 大数据系统的Lambda架构
- linux(NFS)上文件或者目录共享的实现
- C#中的位操作
- 【MySQL】安装&配置
- 深入浅出:CPU,GPU,内存的优化
- JAVA模态窗体监听事件无响应的问题
- Lambda架构 vs Kappa架构
- Digit Counting
- c语言实现的双向循环链表
- <input type="file">accept属性 调起手机摄像头 支持Safari Chrome和大部分手机内置浏览器
- Android Studio2.0 教程从入门到精通Windows版 - 安装篇
- loadrunner : 错误26374
- cocos2d-x 3.2锚点,Point,addchild,getcontensize
- C#对二进制数据进行拼接平移补位,并用BinaryWriter写入文件中
- nil、Nil、NULL和NSNull区别