本章考点:
第22课时主要学习大数据方向软件架构的发展和工作中的实践。根据考试大纲,本课时知识点会涉及案例分析题和论文题(各占25分)。本课时内容侧重于理解性记忆,按照以往的出题规律,部分基础知识点来源于教材,部分考查内容需要灵活运用相关知识点。本课时知识架构如图22.1所示。
一、传统数据处理系统的问题
1.传统数据库的数据过载问题
传统应用的数据系统架构设计时,应用直接访问数据库系统。当用户访问量增加时,数据库无支撑日益增长的用户请求的负载,从而导致数据库服务器无法及时响应用户请求,出现超时的错误。关于这个问题的常用解决方法如下:
(1)增加异步处理队列,通过工作处理层批量处理异步处理队列中的数据修改请求。
(2)建立数据库水平分区,通常建立Key分区,以主键/唯一键 Hash值作为Key。
(3)建立数据库分片或重新分片,通常专门编写脚本来自动完成,且要进行充分测试。
(4) 引入读写分离技术,主数据库处理写请求,,通过复制机制分发至从数据库。
(5)引入分库分表技术,按照业务上下文边界拆分数据组织结构,拆分单数据库压力。
2. 大数据的特点
大数据具有体量大、时效性强的特点,并非构造单调,而是类型多样;处理大数据时,传统数处理系统因数据过载,来源复杂,类型多样等诸多原因性能低下,需要采用以新式计算架构和智能算法为代表的新技术;大数据的应用重在发掘数据间的相关性,而非传统逻辑上的因果关系:因此,大数据的目的和价值就在于发现新的知识,洞悉并进行科学决策。现代大数据处理技术,主要分为以下几种:
(1)基于分布式文件系统 Hadoop。
(2)使用Map/Reduce Spark数据处理技术。
(3)使用Kafka数据传输消息队列及Avro二进制格式。
3.大数据利用过程
大数据的利用过程分为:采集、清洗、统计和挖掘4个过程。
二、大数据处理系统架构分析
(1)大数据处理系统面临的挑战主要有:
1)如何利用信息技术等手段处理非结构化和半结构化数据。
2)如何探索大数据复杂性、不确定性特征描述的刻画方法及大数据的系统建模。
3)数据异构性与决策异构性的关系对大数据知识发现与管理决策的影响。
(2)大数据处理系统应具有的属性和特征包括:鲁棒性和容错性、低延迟、横向扩展(通过增强机器性能扩展)、通用、可扩展、即席查询(用户按照自己的要求进行查询)、最少维护和可调试。
三、典型的大数据架构
1.Lambda 架构
Lambda 架构是一种用于同时处理离线和实时数据的、可容错的、可扩展的分布式系统,如图22.2所示。
Lambda 架构分为以下3层:
(1)批处理层。该层核心功能是存储主数据集,主数据集数据具有原始、不可变、真实的特征。批处理层周期性地将增量数据转储至主数据集,并在主数据集上执行批处理,生成批视图。架构实现方面可以使用Hadoop HDFS或 HBase存储主数据集,再利用 Spark 或 MapReduce执行周期
批处理,之后使用 MapReduce 创建批视图。
(2)加速层。该层的核心功能是处理增量实时数据,生成实时视图,快速执行即席查询。架构实现方面可以使用Hadoop HDFS 或 HBase存储实时数据,利用Spark Stom实现实时数据处理和实时视图。
(3)服务层。该层的核心功能是响应用户请求,合并批视图和实时视图中的结果数据集得到最终数据集。具体来说就是接收用户请求,通过索引加速访问批视图,直接访问实时视图,然后合并两个视图的结果数据集生成最终数据集,响应用户请求。架构实现方面可以使用 HBase 或Cassandra 作为服务层,通过Hive创建可查询的视图。
Lambda 架构优缺点:
Lambda 架构的优点:容错性好,查询灵活度高,弹性伸缩,易于扩展。
Lambda 架构的缺点:编码量大,持续处理成本高,重新部署和迁移成本高。
与 Lambda 架构相似的模式有事件溯源模式、命令查询职责分离模式。
2.Kappa架构
Kappa架构是在Lambda 架构的基础上进行了优化,删除了Batch Layer 的尺构,将数据通道以消息队列进行替代,如图22.3所示。
Kappa架构分为如下2层:
(1)实时层。该层核心功能是处理输入数据,生成实时视图。具体来说是采用流式处理引擎逐条处理输入数据,生成实时视图。架构实现方式是采用Apache Kafka 回访数据,然后采用 Flink或 Spark Streaming 进行处理。
(2)服务层。该层核心功能是使用实时视图中的结果数据集响应用户请求。实践中使用数据湖中的存储作为服务层。
因此Kappa 架构本质上是通过改进 Lambda 架构中的加速层,使它既能够进行实时数据处理,同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据。
Kappa架构的优点是将离线和实时处理代码进行了统一,方便维护。缺点是消息中间件有性能瓶颈、数据关联时处理开销大、抛弃了离线计算的可靠性。
Kappa 架构常见变形是Kappa+架构,如图22.4所示;混合分析系统Kappa 架构,如图22.5所示。
3.Lambda 架构与Kappa架构的对比
两种架构特性对比,见表22.1。
对比内容 | Lambda 架构 | Kappa 架构 |
---|---|---|
复杂度与开发维护成本 | 维护两套系统(引擎),复杂度高,成本高 | 维护一套系统(引擎) 复杂度低,成本低 |
计算开销 | 周期性批处理计算,持续实时计算 计算开销大 | 必要时进行全量计算 计算开销相对较小 |
实时性 | 满足实时性 | 满足实时性 |
历史数据处理能力 | 批式全量处理,吞吐量大 历史数据处理能力强 批视图与实时视图存在冲突可能 | 流式全量处理,吞吐量相对较低 历史数据处理能力相对较弱 |
对于两种架构设计的选择可以从以下4个方面考虑,见表22.2。
设计考虑 | Lambda 架构 | Kappa 架构 |
---|---|---|
业务需求与技术要求 | 依赖Hadoop、Spark.Storm技术 | 依幢 Flink i计算引擎,偏流式计算 |
复杂度 | 实时处理和离线处理结果可能不一致 | 频繁修改算法模型参数 |
开发维护成本 | 成本预算充足 | 成本预算有限 |
历史数据处理能力 | 频繁使用海量历史数据 | 仅使用小规模数据集 |
四、大数据架构的实践
1.大规模视频网络
某网采用以Lambda 架构搭建的大数据平台处理里约奥运会大规模视频网络观看数据,具体台架构设计如图22.6所示。
对于图22.6中的数据计算层可以分为离线计算、实时计算、合并计算3个部分。
(1)离线计算部分:用于存储持续增长的批量离线数据,并且会周期性地使用 SparkMap/Reduce 进行批处理,将批处理结果更新到批视图之后使用Impala 或者Hive建立数据仓库将结果写入 HDFS中。
(2)实时计算部分:采用 Spark Streaming,只处理实时增量数据,将处理后的结果更新到时视图。
(3)合并计算部分:合并批视图和实时视图中的结果,生成最终数据集,将最终数据集写)HBase数据库中用于响应用户的查询请求。
2.广告平台
某网基于 Lambda 架构的广告平台,分为批处理层(Batch Layer)、加速层(Spced Layer)、服务层(Serving Layer),如图22.7所示。
(1)批处理层:每天凌晨将Kafka中浏览、下单等消息同步到HDFS中,将HDFS中数据解析为Hive表,然后使用HQL或 Spark SQL计算分区统计结果Hive表,将Hive表转储到MySQL
中作为批视图。
(2)加速层:使用 Spark Streaming实时监听 Kafka下单、付款等消息,计算每个追踪链接维度的实时数据,将实时计算结果存储在Redis 中作为实时视图。
(3)服务层:采用Jlava Web 服务,对外提供 HTTP接口,Java Web服务读取 MySQL批视图表和 Redis 实时视图表。
3.公司智能决策大数据系统
某证券公司智能决策大数据系统是一个基于Kappa架构的实时日志分析平台,如图22.8所示
具体的实时处理过程如下:
(1)日志采集:用统一的数据处理引擎 Filebeat 实时采集日志并推送给 Kafka缓存。
(2)日志清洗解析:利用基于大数据计算集群的 Flink 计算框架实时读取Kafka 消息并进行清洗,解析日志文本转换成指标。
(3)日志存储:日志转储到 ElasticSearch 日志库,指标转储到OpenTSDB指标库。
(4)日志监控:单独设置告警消息队列,保持监控消息时序管理和实时推送。
4.电商智能决策大数据系统
该智能决策大数据平台基于 Kappa架构,使用统一的数据处理引擎Funk可实时处理流数据,并将其存储到数据仓库工具Hive与分布式缓存Tair 中,以供后续决策服务的使用。如图22.9所示。
实时处理的过程如下:
(1)数据采集:B端实时采集用户点击、下单、广告曝光、出价等数据然后推送给 Kafka缓存。
(2)数据清洗聚合:由Flink实时读取 Kafka消息,按需过滤参与业务需求的指标,将聚合时间段的数据转换成指标。
(3)数据存储:Flink将计算结果转储至Hive日志库,将模型需要的参数转储至实时计算数据库Tair缓存,然后后续决策服务从Tair中获取数据进行模型训练。
五、课后练习
1.以下关于大数据的说法中,错误的是()。
A.大数据拥有体量大、构造单调、时效性强等特点
B.处理大数据需要采用新式计算架构和智能算法等新技术
C.大数据的应用着重相关剖析,而不是因果剖析
D.大数据的目的在于发现新的知识,洞悉并进行科学决策
2.Lambda 架构分为三层:(1)的核心功能是存储主数据集。(2)的核心功能是处理增量实时数据,生成实时视图,快速执行即席查询。(3)的核心功能是响应用户请求,合并批视图和实时视图中的结果数据集得到最终数据集。
(1)A.批处理层 B.流处理层 C.加速层 D.存储层
(2)A.批处理层 B.服务层 C.加速层 D.视图层
(3)A.视图层 B.流处理层 C.服务层 D.存储层
3.某互联网公司近期为其旗下产品升级架构,架构图如图22.10所示,请指出该架构图采用的是什么架构,并结合架构图说明该架构的层次结构。
答案解析:
1、解析:大数据具有体量大、时效性强的特征,并非构造单调,而是类型多样;处理大数据时,传统数据处理系统因数据过载,来源复杂,类型多样等诸多原因性能低下,需要采用以新式计算架构和智能算法为代表的新技术;大数据的应用重在发掘数据间的相关性,而非传统逻辑上的因果关系;因此,大数据的目的和价值就在于发现新的知识,洞悉并进行科学决策。
答案:A
2、解析:Lambda架构分为3层:(1)批处理层。该层的核心功能是存储主数据集,主数据集数据具有原始、不可变、真实的特征。批处理层周期性地将增量数据转储至主数据集,并在主数据集上执行批处理,生成批视图。架构实现方面可以使用Hadoop HDFS或HBase存储主数据集,再利用Spark或Map/Reduce 执行周期批处理,之后使用Map/Reduce创建批视图。
(2)加速层。该层的核心功能是处理增量实时数据,生成实时视图,快速执行即席查询。架构实现方面可以使用Hadoop HDFS或HBase存储实时数据,利用Spark或Storm实现实时数据处理和实时视图。
(3)服务层。该层的核心功能是响应用户请求,合并批视图和实时视图中的结果数据集得到最终数据集。具体来说就是接收用户请求,通过索引加速访问批视图,直接访问实时视图,然后合并两个视图的结果数据集生成最终数据集,响应用户请求。架构实现方面可以使用 HBase 或Cassandra作为服务层,通过Hive创建可查询的视图。
答案:ACC
3、解析:根据题目给出的架构图可发现,该产品通过Collector收集结构化数据推送给主Kafka.主Kafka 再将数据写入HDFS分布式文件系统,而异构数据通过DataX/Sqoop 写入HDFS.HDFS中的数据会通过Offline采用Hive、MapReduce或Spark进行离线处理,还会通过OLAP采用Kylin
或Naix进行联机分析处理后存储至由非各类关系型数据库组成的处理结果存储。主Kafka会通过分发机制将数据分发给Kafka,从而将数据转交给 Flink/Storm 订阅者。Flink/Storm 会对数据进行流式实时处理,再将处理结果存储至处理结果存储。OneDataAPI通过非关系型数据库中的处理结果对数据平面DataFace和业务系统提供数据服务。通过分析架构图可知,该架构图采用的是Lambda
架构。
答案:该架构图采用的是Lambda架构,该架构由如下层次组成:
(1)数据采集层:Collector、DataX/Sqoop.
(2)数据源:HDFS.
(3)批处理层:Offline(Hive/MR/Spark),OLAP(Kylin/Naix).
(4)加速层:Flink/Storm.
(5)服务层:结果视图存储(MongoDB、ElasticSearch、HBase、Redis...),OneDataAPI.