本博客地址:https://security.blog.csdn.net/article/details/136657478
一. 基本概念
1、解决传统数据架构无法及时响应用户请求的常用解决方法:
● 增加异步处理队列
,通过工作处理层批量处理异步处理队列中的数据修改请求。
● 建立数据库水平分区
,通常建立 Key 分区,以主键/唯一键 Hash 值作为 Key。
● 建立数据库分片或重新分片
,通常专门编写脚本来自动完成,且要进行充分测试。
● 引入读写分离技术
,主数据库处理写请求,通过复制机制分发至从数据库。
● 引入分库分表技术
,按照业务上下文边界拆分数据组织结构,拆分单数据库压力。
2、大数据处理技术主要分为以下几种:
● 基于分布式文件系统 Hadoop。
● 使用 Map/Reduce 或 Spark 数据处理技术。
● 使用 Kafka 数据传输消息队列及 Avro 二进制格式。
3、大数据的利用过程分为:采集
、清洗
、统计
和挖掘
4 个过程。
4、大数据处理系统面临的挑战主要有:
● 如何利用信息技术等手段处理非结构化和半结构化数据。
● 如何探索大数据复杂性、不确定性特征描述的刻画方法及大数据的系统建模。
● 数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响。
5、大数据处理系统应具有的属性和特征包括:鲁棒性和容错性
、低延迟
、横向扩展(通过增强机器性能扩展)
、通用
、可扩展
、即席查询(用户按照自己的要求进行查询)
、最少维护和可调试
。
二. 大数据架构之Lambda架构
1、Lambda 架构是一种用于同时处理离线和实时数据的
、可容错的
、可扩展的
分布式系统。
2、Lambda 架构分为以下 3 层:批处理层
、加速层
、服务层
。
3、批处理层
。该层核心功能是存储主数据集
,主数据集数据具有原始、不可变、真实的特征。批处理层周期性地将增量数据转储至主数据集,并在主数据集上执行批处理,生成批视图。架构实现方面可以使用 Hadoop HDFS 或 HBase 存储主数据集,再利用 Spark 或 MapReduce 执行周期批处理,之后使用 MapReduce 创建批视图。
4、加速层
。该层的核心功能是处理增量实时数据,生成实时视图,快速执行即席查询
。架构实现方面可以使用 Hadoop HDFS 或 HBase 存储实时数据,利用 Spark 或 Storm 实现实时数据处理和实时视图。
5、服务层
。该层的核心功能是响应用户请求,合并批视图和实时视图中的结果数据集得到最终数据集
。具体来说就是接收用户请求,通过索引加速访问批视图,直接访问实时视图,然后合并两个视图的结果数据集生成最终数据集,响应用户请求。架构实现方面可以使用 HBase 或Cassandra 作为服务层,通过 Hive 创建可查询的视图。
6、Lambda 架构优缺点
:
● Lambda 架构的优点:容错性好
,查询灵活度高
,弹性伸缩
,易于扩展
。
● Lambda 架构的缺点:编码量大
,持续处理成本高
,重新部署和迁移成本高
。
7、与 Lambda 架构相似的模式有事件溯源模式
、命令查询职责分离模式
。
三. Kappa 架构
1、Kappa 架构是在 Lambda 架构的基础上进行了优化,删除了 Batch Layer 的架构
,将数据通道
以消息队列
进行替代。
图 22.3 Kappa 架构
2、Kappa 架构分为如下 2 层:实时层
、服务层
。
3、实时层
。该层核心功能是处理输入数据
,生成实时视图
。具体来说是采用流式处理引擎逐条处理输入数据,生成实时视图。架构实现方式是采用 Apache Kafka 回访数据,然后采用 Flink或 Spark Streaming 进行处理。
4、服务层
。该层核心功能是使用实时视图中的结果数据集响应用户请求
。实践中使用数据湖中的存储作为服务层。
5、Kappa 架构本质上是通过改进 Lambda 架构中的加速层,使它既能够进行实时数据处理,同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据。
6、Kappa 架构的优点是将离线和实时处理代码进行了统一,方便维护
。缺点是消息中间件有性能瓶颈、数据关联时处理开销大、抛弃了离线计算的可靠性
。
四. Lambda 架构与 Kappa 架构的对比
1、两种架构特性对比:
对比内容 | Lambda 架构 | Kappa 架构 |
---|---|---|
复杂度与开发维护成本 | 维护两套系统(引擎),复杂度高,成本高 | 维护一套系统(引擎)复杂度低,成本低 |
计算开销 | 周期性批处理计算,持续实时计算 计算开销大 | 必要时进行全量计算 计算开销相对较小 |
实时性 | 满足实时性 | 满足实时性 |
历史数据处理能力 | 批式全量处理,吞吐量大 历史数据处理能力强 批视图与实时视图存在冲突可能 | 流式全量处理,吞吐量相对较低 历史数据处理能力相对较弱 |
2、对于两种架构设计的选择可以从以下 4 个方面考虑:
设计考虑 | Lambda 架构 | Kappa 架构 |
---|---|---|
业务需求与技术要求 | 依赖 Hadoop、Spark、Storm 技术 | 依赖 Flink 计算引擎,偏流式计算 |
复杂度 | 实时处理和离线处理结果可能不一致 | 频繁修改算法模型参数 |
开发维护成本 | 成本预算充足 | 成本预算有限 |
历史数据处理能力 | 频繁使用海量历史数据 | 仅使用小规模数据集 |
五. 大规模视频网络大数据架构
1、架构图如下:
2、对于图中的数据计算层可以分为离线计算
、实时计算
、合并计算
3 个部分。
3、离线计算部分
:用于存储持续增长的批量离线数据,并且会周期性地使用 Spark 和Map/Reduce 进行批处理,将批处理结果更新到批视图之后使用 Impala 或者 Hive 建立数据仓库,将结果写入 HDFS 中。
4、实时计算部分
:采用 Spark Streaming,只处理实时增量数据,将处理后的结果更新到实时视图。
5、合并计算部分
:合并批视图和实时视图中的结果,生成最终数据集,将最终数据集写入HBase 数据库中用于响应用户的查询请求。
六. 广告平台大数据架构
1、架构图如下:
2、以上基于 Lambda 架构的广告平台,分为批处理层(Batch Layer)
、加速层(Speed Layer)
、服务层(Serving Layer)
。
3、批处理层
:每天凌晨将 Kafka 中浏览、下单等消息同步到 HDFS 中,将 HDFS 中数据解析为 Hive 表,然后使用 HQL 或 Spark SQL 计算分区统计结果 Hive 表,将 Hive 表转储到 MySQL中作为批视图。
4、加速层
:使用 Spark Streaming 实时监听 Kafka 下单、付款等消息,计算每个追踪链接维度的实时数据,将实时计算结果存储在 Redis 中作为实时视图。
5、服务层
:采用 Java Web 服务,对外提供 HTTP 接口,Java Web 服务读取 MySQL 批视图表和 Redis 实时视图表。
七. 智能决策平台大数据架构
1、架构图如下:
2、以上智能决策大数据系统是一个基于 Kappa 架构的实时日志分析平台。
3、具体的实时处理过程如下:
● 日志采集
:用统一的数据处理引擎 Filebeat 实时采集日志并推送给 Kafka 缓存。
● 日志清洗解析
:利用基于大数据计算集群的 Flink 计算框架实时读取 Kafka 消息并进行清洗,解析日志文本转换成指标。
● 日志存储
:日志转储到 ElasticSearch 日志库,指标转储到 OpenTSDB 指标库。
● 日志监控
:单独设置告警消息队列,保持监控消息时序管理和实时推送。
八. 电商决策平台大数据架构
1、架构图如下:
2、该平台基于 Kappa 架构,使用统一的数据处理引擎 Funk 可实时处理流数据,并将其存储到数据仓库工具 Hive 与分布式缓存 Tair 中,以供后续决策服务的使用。
3、实时处理的过程如下:
● 数据采集
:B 端实时采集用户点击、下单、广告曝光、出价等数据然后推送给 Kafka缓存。
● 数据清洗聚合
:由 Flink 实时读取 Kafka 消息,按需过滤参与业务需求的指标,将聚合时间段的数据转换成指标。
● 数据存储
:Flink 将计算结果转储至 Hive 日志库,将模型需要的参数转储至实时计算数据库 Tair 缓存,然后后续决策服务从 Tair 中获取数据进行模型训练。