一、传统数据处理系统存在的问题
二、大数据处理系统架构分析
2-1 大数据处理系统面临挑战
- 1.如何利用信息技术等手段处理非结构化和半结构化数据
- 2.如何探索大数据复杂性、不确定性特征描述的刻画方法及大数据的系统建模
- 3.数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响
2-2 大数据处理系统架构特征
- 鲁棒性和容错性(Robust and Fault-tolerant)
- 低延迟读取和更新能力(Low Latency Reads and Updates)
- 横向扩容(Scalable)
- 通用性(General)
- 延展性(Extensible)
- 即席查询能力(Allow Ad Hoc Queries)
- 最少维护能力(Minimal Maintenance)
- 可调试性(Debuggable)
三、Lambda架构
3-1 Lambda架构对大数据处理系统的理解
3-2 Lambda架构应用场景
3-3 Lambda架构介绍
可分为三层:
- 批处理层(Batch Layer):存储数据集合生成Batch View
该层负责管理主数据集。主数据集中的数据必须具有以下三个属性:
- (1)数据是原始的。
- (2)数据是不可变的。
- (3)数据永远是真实的。
2. 加速层(Speed Layer)
3. 服务层(Serving Layer)
3-4 Lambda架构的实现
3-5 Lambda架构优缺点
1.优点
(1) 容错性好。Lambda 架构为大数据系统提供了更友好的容错能力,一旦发生错误,我们可以修复算法或从头开始重新计算视图。
(2) 查询灵活度高。批处理层允许针对任何数据进行临时查询。
(3) 易伸缩。所有的批处理层、加速层和服务层都很容易扩展。因为它们都是完全分布式的系统,我们可以通过增加新机器来轻松地扩大规模。
(4)易扩展。添加视图是容易的,只是给主数据集添加几个新的函数。
2.缺点
(1)全场景覆盖带来的编码开销
(2)针对具体场景重新离线训练一遍益处不大。
(3)重新部署和迁移成本很高。
3-5 Lambda架构与其他架构模式对比
进行读写分离设计的原因是,读操作实际上比写操作要省时得多,如果将读和写操作放在一起,实际处理大量数据时会因为写操作的时长问题影响整体业务的处理效率。在大数据系统中经常处理海量数据,进行读写分离重要性不言而喻。
四、Kappa 架构
4-1 Kappa架构下对大数据处理系统的理解
CRUD:Create、Read、Update、Delete
4-2 Kappa架构介绍
从使用场景上来看,Kappa架构与 Lambda相比,主要有两点区别:
- (1)Kappa 不是 Lambda 的替代架构,而是其简化版本,Kappa 放弃了对批处理的支持,更擅长业务本身为增量数据写入场景的分析需求,例如各种时序数据场景,天然存在时间窗口的概念,流式计算直接满足其实时计算和历史补偿任务需求;
- (2)Lambda 直接支持批处理,因此更适合对历史数据分析査询的场景,比如数据分析师需要按任意条件组合对历史数据进行探索性的分析,并且有一定的实时性需求,期望尽快得到分析结果,批处理可以更直接高效地满足这些需求。
4-3 Kappa架构的实现
Apache Kafka
4-4 Kappa架构的优缺点
Kappa 架构的优点在于将实时和离线代码统一起来,方便维护而且统一了数据口径的问题,避免了 Lambda 架构中与离线数据合并的问题,查询历史数据的时候只需要重放存储的历史数据即可。
Kappa 的缺点也很明显:
(1)消息中间件缓存的数据量和回溯数据有性能瓶颈。通常算法需要过去 180 天的数据,如果都存在消息中间件,无疑有非常大的压力。同时,一次性回溯订正180天级别的数据,对实时计算的资源消耗也非常大。
(2)在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。
(3)Kappa在抛弃了离线数据处理模块的时候,同时抛弃了离线计算更加稳定可靠的特点。Lambda 虽然保证了离线计算的稳定性,但双系统的维护成本高且两套代码带来后期运维困难。
4-5 常见Kappa架构变形
- Kappa+架构
- 混合分析系统的Kappa架构
五、 Lambda 架构与 Kappa 架构的对比和设计选择
5-1 Lambda架构与Kappa架构的特性对比
5-2 Lambda架构与Kappa架构的设计选择
- 业务需求与技术需求
Lambda:Hadoop、Spark、Storm
Kappa:偏好流水计算、Flink 计算引擎 - 复杂度
批处理层和流处理层不能统一,Lambda。 - 开发维护成本
- 历史数据处理能力 Lambda:海量数据 Kappa:小规模数据集