- 大数据挑战
- 处理非结构化和半结构化数据
- 大数据复杂性、不确定性特征描述的刻画方法和系统建模
- 异构性和决策异构性
- Lambda 架构
- 提供一个能满足大数据系统关键特性的架构
- 整合离线计算和实时计算,同时处理
- 分为三层:批处理层、加速层和服务层
- 批处理层:预算计算查询函数,处理离线数据
- 加速层:处理最近的增量数据,在接收到新数据会不断更新 Real-time View
- 服务层:合并 Batch View 和 Real-time View 结果数据集得到最终数据集,用于响应用户查询请求
- Hadoop 用于存储主数据集,批处理层;Spark 构成加速层;HBase 作为服务层,Hive 创建可查询的视图
- 优点:容错性好、查询灵活度高、易伸缩易扩展
- 缺点:全场景覆盖带来的编码开销,重新部署和迁移成本很高
- 事件溯源:数据持久化方式
- 以事件驱动
- 事件是核心,事件保存在存储上
- 业务数据只是事件产生的视图
- CQRS 架构,读写分离
- Kappa 架构
- 删除批处理架构,数据通道以消息队列进行替代
- 数据湖数据经过消息队列重播以进行离线计算
- 输入数据直接由实时层的实时数据处理引擎对源源不断的源数据进行处理
- 与 Lambda 区别
- Kappa 无批处理支持,擅长增量数据写入;Lambda 适合对历史数据分析查询场景
- 优点:将实时和离线代码统一
- 缺点:
- 缓存的数据量和回溯数据有性能瓶颈
- 大量不同的实时流进行关联时,依赖实时计算系统的能力
- 抛弃了离线计算更加稳定可靠的特点
- Kappa+:流计算直接读 HDFS 的数据仓库数据,一并实现实时计算和历史数据计算。将不同来源的数据通过 Kafka 导入 Hadoop,通过 HDFS 存储中间数据,再通过 spark 对数据进行分析
- Lambda 架构和 Kappa 架构的对比和选择
- 业务需求与技术要求:如果对于 Hadoop、Spark、Strom 有强制依赖则选择 Lambda 更合适,偏好与流式计算则 Kappa 架构
- 复杂度:需要频繁对算法模型进行修改,Lambda 需要该两套代码
- 开发维护成本:Kappa 只需要维护一套系统
- 历史数据处理能力:频繁接触海量数据集分析则 Lambda