0. 原文迁移
大数据之Kappa架构:
目录
- 0. 原文迁移
- 一、Kappa架构
- 二、Kappa处理过程
- 三、Kappa优缺点
- 3.1 Kappa架构优缺点
- 3.2 Lamda和Kappa架构对比
Kappa架构是
由LinkedIn的前首席工程师杰伊·克雷普斯(
Jay Kreps
)提出的一种架构思想。克雷普斯是几个著名开源项目(包括
Apache Kafka
和
Apache Samza
这样的流处理系统)的作者之一。
Kreps 提出了一个改进 Lambda 架构的观点:
- 通过改进
Lambda架构
中的Speed Layer
,使它既能够进行实时数据处理,同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据。
Kappa架构
的原理就是:在Lambda架构的基础上进行了优化,删除了Batch Layer的架构
,将数据通道以消息队列进行替代。因此对于Kappa架构来说,依旧以流处理
为主,但是数据却在数据湖层面进行了存储,当需要进行离线分析或者再次计算的时候,则将数据湖的数据再次经过消息队列重播一次则可。
一、Kappa架构
二、Kappa处理过程
以Apache Kafka
为例来讲述整个全新架构的过程:
- 设置Apache Kafka日
志数据保留时间
,保留时间是指能够重新处理历史数据的时间区间。
例如,如果希望重新处理最多一年的历史数据,那就可以把Apache Kafka 中的保留期设置为365天。如果希望能够处理所有的历史数据,那就可以把 Apache Kafka 中的保留期设置为永久(Forever) - 如果需要改进现有的逻辑算法,也就表示
需要对历史数据进行重新处理
,需要做的就是重新启动一个Apache Kafka作业实例
(Instance),该作业实例将从头开始,重新计算保留好的历史数据,并将结果输出到一个新的数据视图中。
我们知道Apache Kafka的是使用
Log Offset
判断当前已处理到哪个数据块了,所以只需要设置Log Offset为0
,新的作业实例就会从头开始处理历史数据。
- 当
处理的新数据视图进度赶上了旧数据视图
时,应用可以切换到从新的数据视图中读取
。 -
停止旧版本的作业实例,并删除旧的数据视图
。
三、Kappa优缺点
3.1 Kappa架构优缺点
Kappa架构
的优点在于将实时和离线代码统一起来
,方便维护而且统一数据口径的问题。而Kappa的缺点也很明显
:
- 消息中间件
缓存的数据量和回溯数据有性能瓶颈
。通常算法需要过去180天的数据,如果都存在消息中间件,无疑有非常大的压力。同时,一次性回溯订正180天级别的数据,对实时计算的资源消耗也非常大。 - 在处理实时数据时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,
很可能因为数据流先后顺序问题,导致数据丢失
。 - Kappa在抛弃了离线数据处理模块的时候,同时
抛弃了离线计算更加稳定可靠的特点
。Lambda架构虽然保证了离线计算的稳定性,但双系统的维护成本高且两套代码带来后期运维困难
。
Lamda架构 | Kappa架构 | |
优点 | 1. 架构简单 2.结合离线批处理和实时流处理优点 3.稳定且实时计算成本可控 4. 离线数据易于订正 | 1.只需维护实时处理模块 2.无须合并离线和实时数据 |
缺点 | 1. 离线和实时数据很难保证一致 2.需要维护2套代码 | 1.强依赖消息中间件 2.实时数据处理存在消息丢失 |
3.2 Lamda和Kappa架构对比
Lamda架构 | Kappa架构 | |
实时性 | 实时 | 实时 |
计算资源 | 批流同时运行,资源消耗大 | 只有流处理,资源消耗小 |
重新计算 | 批式全量处理,吞吐量高 | 流式处理,比批量处理吞吐量低 |
开发难度 | 同时开发批处理和流处理两套代码,开发测试难度大 | 只开发一套流处理代码,难度小 |
运维成本 | 同时维护批处理和流处理两套代码,运维难度大 | 只运维一套流处理代码,难度小 |