一、大数据处理系统架构特性
1. 鲁棒性和容错性:
系统必须对游bug的程序写入的错误数据游足够的适应能力
2. 低延迟读取和更新能力
3. 横向扩容:
可以通过增加机器数量来维持性能
4. 通用性:
需要支持绝大多数应用程序
5. 延展性:
系统需要对新功能加入友好
6. 即席查询能力:
用户可以按照的要求进行即席查询
7. 最少维护能力:
系统需要在大多数时间下保持平稳运行
8. 可调式性:
系统在运行中产生的每一个值,需要有可用途径进行追踪,并且能够明确数据是如何产
生的
二、Lambda架构
Lambda架构可分为:批处理层、加速层、服务层
批处理层:存储主数据集,主要是离线数据(历史数据),数据包括以下特性:1. 数据是原
始的;2. 数据是不可变的;3. 数据永远是真实的(Hadoop)
加速层:只存储最近新增的数据流,并且实时更新(Spark)
服务层:用于合并批处理层视图和是加速层视图,得到最终结果集。响应客户的查询请求
(HBase)
优点:
1. 容错性好:一旦出现错误,可以修改算法或重新计算视图,加速层中产生的错误可以
在批处理层得到修正
2. 查询灵活度高:运行对任何数据进行临时查询
3. 易伸缩:批处理层、加速层、服务层都是分布式部署的,扩展方便
4. 易扩展:添加视图只需要给主数据集添加几个函数
缺点:
1. 全场景覆盖带来的编码开销
2. 正对具体场景重新李现训练一遍益处不大
3. 重新部署和迁移成本高
缺点:
三、Kappa架构
Kappa架构对Lambda架构进行了优化,删除了批处理层。只有实时层和服务层
优点:
1. 将实时和离线代码统一起来,方便维护而且统一了数据口径问题
2. 维护成本低
缺点:
1. 消息中间件缓存的数据量和回溯数据有性能瓶颈
2. 在实时数据处理事,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能
力,很有可能因为数据流先后顺序问题,导致数据丢失 。
3. 在抛弃历史数据处理模块时,同时抛弃了李现计算更加稳定可靠的特点
四、Lambda架构与Kappa架构对比
对比内容 | Lambda架构 | Kappa架构 |
复杂度与开发、维护成本 | 需要维护两套系统引擎,复杂度高,开发维护成本高 | 只需要维护一套系统引擎,复杂度低,开发维护成本低 |
计算开销 | 需要一直运行批处理和实时计算、计算开销大 | 必要时进行全量计算,计算开销相对较小 |
实时性 | 满足实时性 | 满足实时性 |
历史数据查询能力 | 批处理全量处理,吞吐量大,历史数据处理能力强 | 流式全量处理,吞吐量相对较低,历史数据处理能力弱 |
Lambda和Kappa的选择:
1. 业务需求和技术要求
2. 复杂度
3. 开发维护成本
4. 历史数据处理能力