系统架构-大数据架构设计
基础介绍
三大挑战:
- 如何处理非结构化和半结构化数据
- 如何探索大数据复杂性、不确定性特征描述的刻画方法及大数据的系统建模
- 数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响
架构特征:
- 鲁棒性(稳定性)和容错性
- 低延迟读取和更新能力
- 横向扩容
- 通用性
- 延展性
- 即席查询能力(高效的用户查询)
- 最少维护能力
- 可调试性
Lambda架构
设计目的在于提供一个能满足大数据系统关键性的架构,整合了离线计算与实时计算。
Lambda架构分解为三层:批处理层、加速层和服务层
批处理层(离线):产生批处理结果视图,结果认为是精准且全量的,但处理时延较高
加速层:处理最近的增量数据流。在接收到新的数据后会不断更新视图
服务层:合并批处理层产出的视图和加速层产出的实时视图,最终得到数据集,响应用户的查询请求
优点:容错性好、查询灵活度高、易伸缩、易扩展,读写分离
缺点:全场景覆盖带来的编码开销,针对具体场景的离线处理开销很大
事件溯源与Lambda架构:
- 整个系统以事件为驱动
- 事件是核心,事件保存在某种存储上
- 业务数据 只是一些由事件产生的视图
Kappa架构
在lambda架构的基础上进行优化,删除了Batch Layer(批处理层),将数据通道以消息队列进行替代。当需要进行离线分析或再次计算时,则将数据湖的数据再次经过消息队列重播一次。
优点:将实时和离线代码统一起来,避免了Lambda架构中与离线数据合并的问题
缺点:消息中间件缓存的数据量和回溯数据有性能瓶颈;非常依赖实时计算系统的能力;抛弃了离线计算更加稳定可靠的特定
Kappa+架构:让流计算框架Spark直接读取HDFS(Hadoop)里的数据仓库数据(历史/离线数据),一并实现实时计算和历史数据计算。