大数据架构设计

本博客地址: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 中获取数据进行模型训练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/465728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uni-popup(实现自定义弹窗提示、交互)

一般提示框的样式,一般由设计稿而定,如果用uniapp的showmodel,那个并不能满足我们需要的自定义样式,所以最好的方式是我们自己封装一个!(想什么样就什么样)! 一、页面效果 二、使用…

BUUCTF-----[GXYCTF2019]禁止套娃

题目 目录扫描&#xff0c;扫到.git泄露&#xff0c;使用工具查看到index.php的源码 <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])){if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i,…

独家揭秘:短剧app开发的5大关键技巧

在移动互联网时代&#xff0c;短剧app成为了各大平台竞相推广的热门产品之一。想要在激烈的市场竞争中脱颖而出&#xff0c;短剧app开发必须做到精益求精。作为短剧app开发领域的专家&#xff0c;我将揭秘短剧app开发的5大关键技巧&#xff0c;帮助开发者们在激烈的竞争中立于不…

力扣大厂热门面试算法题 39-41

39. 组合总和&#xff0c;40. 组合总和 II&#xff0c;41. 缺失的第一个正数&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.17 可通过leetcode所有测试用例。 目录 39. 组合总和 解题思路 完整代码 Python Java 40. 组合…

前端应用开发实验:Vue的特性

目录 实验目的实验内容图片浏览功能代码实现效果 简单购物车功能代码实现效果 汇率换算功能代码实现效果 关于需要准备的内容&#xff0c;如Vue的下载就不多赘述了 实验目的 &#xff08;1&#xff09;掌握vue实例编写的语法和基本选项的使用 &#xff08;2&#xff09;在实际…

深度学习pytorch——Broadcast自动扩展

介绍 在 PyTorch 中&#xff0c;Broadcast 是指自动扩展&#xff08;broadcasting&#xff09;运算的功能。它允许用户在不同形状的张量之间执行运算&#xff0c;而无需手动将它们的形状改变为相同的大小。当进行运算时&#xff0c;PyTorch 会自动调整张量的形状&#xff0c;使…

十八、软考-系统架构设计师笔记-真题解析-2022年真题

软考-系统架构设计师-2022年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与SaaS、PaaS、IaaS相对应&#xff0c;图中①、②、③应为( )。 A.应用层、基础设施层、平台层 B.应用层、平台层、基础设施层 C.平…

尊嘟假嘟,只需HiFi测序即可获得T2T基因组?

探秘动植物物种进化及遗传多样性的第一步往往是进行基因组测序&#xff0c;基因组从头组装&#xff08;Genome De novo assembly&#xff09; 是指从测序数据中重建生物基因组序列的过程。组装一直是生物信息学中的核心问题。 然而&#xff0c;到2019年底完成图这个概念仍然只…

香港公司变更注册地址所需材料及流程全解析

香港公司变更注册地址&#xff1a;所需材料及流程全解析 各位老板好&#xff0c;我是经典世纪胡云帅&#xff0c;随着业务的拓展和发展&#xff0c;香港公司可能需要变更其注册地址。变更注册地址不仅关系到公司的日常运营&#xff0c;还与公司的法律地位和品牌形象息息相关。本…

Grok-1 开源:马斯克旗下xAI公司发布革命性AI模型,开启开源大模型新篇章|3140亿参数

自从埃隆马斯克&#xff08;Elon Musk&#xff09;上周&#xff08;3月11日&#xff09;在 X 平台上宣布 Grok 将于本周开源的消息后&#xff0c;无数目光便聚焦于此&#xff0c;期待之情溢于言表。继 Meta 旗下的 Llama 2 模型开源之后&#xff0c;开源大模型界便充满了对新技…

Linux查看硬件型号详细信息

1.查看CPU &#xff08;1&#xff09;使用cat /proc/cpuinfo或lscpu &#xff08;2&#xff09;使用dmidecode -i processor Dmidecode 这款软件允许你在 Linux 系统下获取有关硬件方面的信息。Dmidecode 遵循 SMBIOS/DMI 标准&#xff0c;其输出的信息包括 BIOS、系统、主板、…

【Unity】获取游戏对象或组件的常用方法

前言 在Unity开发过程中&#xff0c;我们经常需要获取组件&#xff0c;那么在Unity里如何获取组件呢&#xff1f; 一、获取游戏对象 1.GameObject.Find GameObject.Find 是通过物体的名称获取对象的 所以会遍历当前整个场景&#xff0c;效率较低 而且只能获取激活状态的物体…

Sentinel篇:线程隔离和熔断降级

书接上回&#xff1a;微服务&#xff1a;Sentinel篇 3. 隔离和降级 限流是一种预防措施&#xff0c;虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还会因为其它原因而故障。 而要将这些故障控制在一定范围&#xff0c;避免雪崩&#xff0c;就要靠线程隔离…

作品展示ETL

1、ETL 作业定义、作业导入、控件拖拽、执行、监控、稽核、告警、报告导出、定时设定 欧洲某国电信系统数据割接作业定义中文页面&#xff08;作业顶层&#xff0c;可切英文&#xff0c;按F1弹当前页面帮助&#xff09; 涉及文件拆分、文件到mysql、库到库、数据清洗、数据转…

青海200MW光伏项目 35kV开关站图像监控及安全警示系统

一、背景 随着我国新能源产业的快速发展&#xff0c;光伏发电作为清洁能源的重要组成部分&#xff0c;得到了国家政策的大力扶持。青海作为我国光伏资源丰富地区&#xff0c;吸引了众多光伏项目的投资建设。在此背景下&#xff0c;为提高光伏发电项目的运行效率和安全性能&…

数据安全与个人隐私:美国人的焦虑与变化

PrimiHub一款由密码学专家团队打造的开源隐私计算平台&#xff0c;专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 在这个每一次点击、轻敲或按键都留下数字踪迹的时代&#xff0c;美国人对个人数据安全的焦虑与日俱增。他们感觉对数据的使用几乎…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包,第四:trans_beta class

trans_beta class&#xff1a;利用trans_beta类可以变换和绘制beta分集的距离矩阵。该类中涉及到beta多样性的分析主要包括排序、群距、聚类和方差分析。我们首先使用PCoA显示排序。 > dataset$cal_betadiv() The result is stored in object$beta_diversity ... > t1 &…

unittest初级了解

unitttest初级了解 单元测试框架测试流程 编写测试用例创建测试类测试用例测试用例执行 单元测试框架 unittest(python自带的)&#xff0c;pytest(第三方库) 测试流程 编写测试用例—收集测试用例—执行用例—生成测试结果 编写测试用例 创建测试类 类名称建议以Test开头&…

html系列:按钮被样式图片挡着了,无法点击怎么办

​ 背景 在开发中会遇到一些奇奇怪怪的需求&#xff0c;比如在按钮上要显示一个样式图片&#xff0c;同时还要能不影响按钮的点击使用&#xff1b;这时候&#xff0c;设置好了样式&#xff0c;按钮无法点击怎么办&#xff1f; 在查阅资料的时候找到了解决方案。 解决方案 …

WPF图表库LiveCharts的使用

这个LiveCharts非常考究版本&#xff0c;它有非常多个版本&#xff0c;.net6对应的是LiveChart2 我这里的wpf项目是.net6&#xff0c;所以安装的是这三个&#xff0c;搜索的时候要将按钮“包括愈发行版”打勾 git&#xff1a;https://github.com/beto-rodriguez/LiveCharts2?…