19.4 Kappa架构
19.4.1 Kappa架构下对大数据处理系统的理解
数据系统=数据+查询
1.数据的特性
两个关键性质:
When,数据与时间相关的,数据在某个时间点产生
What,数据本身是不可变的,对数据操作其实就是两种:读取已存在的数据和添加新数据
2.数据的存储
存储方式:数据不可变、存储所有数据
好处:
(1)简单,存储数据时只需要简单追加数据
(2)应对人为和机器错误,通过不可变性和重新计算来处理人为和机器的错误
19.4.2 Kappa架构介绍
Kappa 只会通过流计算一条的数据链路计算并产生视图。本质是通过改进Lambda架构中的 Speed Layer, 使它既能够进行实时数据处理,同时也能在业务逻辑更新的情况下重新处理以前的历史数据。
Kappa 架构的原理就是:在Lambda的基础上进行了优化,删除了 Batch Layer 的架构,将数据通道以消息队列进行替代。
从使用场景上来看, Kappa架构与Lambda相比,主要有两点区别:
(1)Kappa是Lambda的简化版本, Kappa放弃了对批处理的支持,更 擅长业务本身为增量数据写入场景的分析需求
(2)Lambda支持批处理,更适合对历史数据分析查询的场景
19.4.3 Kappa架构的实现
以Apache Kafka为例,来描述架构过程
部署 Apache Kafka, 并设置数据日志的保留期 (Retention Period)。
如果需要重新处理历史数据,需要重启Apache Kafka作业实例,重头开始计算历史数据,并将结果输出到新的数据视图中。
当新的数据视图处理进度赶超旧的数据视图时,切换到新的数据视图上读取数据
停止旧的作业实例,删除旧的数据视图
19.4.4 Kappa架构的优缺点
优点:将实时和离线代码统一,方便维护、统一了数据接口,避免了离线数据合并问题
缺点:
1.消息中间件缓存的数据量和回溯数据有性能瓶颈
2.实时处理数据时,遇到大量实时流进行关联时,可能会因为数据流先后顺序问题,导致数据丢失
3.Kappa抛弃了离线计算更加稳定可靠的特点
19.4.5 常见Kappa架构变形
1.Kappa+ 架构
Kappa+是流式数据处理架构,它的核心思想是让流计算框架直接读 HDFS里的 数据仓库数据,一并实现实时计算和历史数据backfll 计算,不需要为 backfll 作业长期保存日 志或者把数据拷贝回消息队列。
Kappa+将数据任务分为无状态任务和时间窗口任务,无状态任务根据吞吐速度合理并发扫描全量数据即可,
时间窗口任务将数据仓库数据按照时间粒度进行分区存储,按时间先后顺序依次计算partition的数据
2.混合分析系统的 Kappa架
在 Kappa基础上衍生数据分析流程
基于使用 Kafka +Flink 构 建Kappa 流计算数据架构,
利用 Kafka对接组合 Elastic- Search 实时分析引擎,提升分析能力