网络计算模式复习(四)

news2024/11/23 15:20:02

MapReduce

MapReduce分布式处理技术、分布式的文件系统GFS、结构化的BigTable存储系统是Google的三个核心技术。

Map-Reduce:用于大规模数据集的并行计算。
(分而治之)将要执行的问题拆解成Map(映射)和Reduce(化简)的方式,先通过Map程序将数据切割成不相关的区块,分配给大量计算机处理达到分布运算的效果,再通过Reduce程序将结果汇整,输出开发者需要的结果。

MapReduce分布式处理技术——Map端
map: (k1, v1) → list(k2, v2)

  • 输入:键值对(k1,v1)表示的数据
  • 处理:文档数据记录将以“键值对”形式传入map函数;map将处理这些键值对,并以另一种键值对形式输出处理的一组键值对中间结果list(k2,v2)。
  • 输出:键值对(k2, v2)表示的一组中间数据
  • 备注: list(k2, v2) 表示有一个或多个键值对组成的列表

各个map函数对所划分的数据并行处理,从不同的输入数据产生不同的中间结果输出。
各个reduce各自并行计算,各自负责处理不同的中间结果数据集合;
进行reduce之前,须等到所有的map函数做完,并且在进入reduce前会对map的中间结果数据进行整理(Shuffle),保证将map的结果发送给对应的reduce。
最终汇总所有reduce的输出结果即可获得最终结果。

在这里插入图片描述
MapReduce框架由一个单独运行在主节点上的JobTracker 和运行在每个集群从节点上的TaskTracker组成。
主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前失败的任务。

在这里插入图片描述
在这里插入图片描述

Hadoop

在Google发表MapReduce后,2004年开源社群用Java搭建出一套Hadoop框架,用于实现MapReduce 算法,能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。

此外,Hadoop 还提供一个分布式文件系统GFS(Google file system),支持大型、分布式大数据量的读写操作,其容错性较强。而分布式数据库(BigTable)是一个有序、稀疏、多维度的映射表,有良好的伸缩性和高可用性,用来将数据存储或部署到各个计算节点上。

在架构中MapReduce API提供Map和Reduce处理、GFS分布式文件系统和BigTable分布式数据库提供数据存取。基于Hadoop可以非常轻松和方便完成处理海量数据的分布式并行程序,并运行于大规模集群上。

在这里插入图片描述

数据一致性理论

CAP理论

  • 强一致性(Consistency):系统在执行某项操作后仍然处于一致状态。在分布式系统中,更新操作执行成功后所有用户都应该读取到最新的值,这样的系统被认为具有强一致性。
  • 可用性(Availability):每一个操作总是能够在一定的时间内返回结果。
  • 分区容错性(Partition Tolerance):分区容错性可以理解为系统在存在网络分区的情况下仍然可以接受请求(满足一致性和可用性)。

CAP理论是在分布式环境中设计和部署系统时需要考虑的三个重要的系统需求。根据CAP理论,数据共享系统只能满足这三个特性中的两个,而不能同时满足三个条件。因此系统必须在这三个特性之间做出权衡。

最终一致性模型
分布式系统一般通过复制数据来提高系统的可靠性和容错性,并且将数据的不同副本存放在不同的机器上。由于维护数据副本一致性代价很高,许多系统采用弱一致性来提高性能。

不同的一致性模型:强一致性、弱一致性、最终一致性。

  • 强一致性:要求无论更新操作在哪个数据副本上执行,之后所有的读操作都要获得最新的数据。对于单副本数据来说,读写操作在同一数据上执行,容易保证强一致性。对于多副本数据来说,需要使用分布式事物协议(如Paxos)。
  • 弱一致性:在这种一致性下,用户读到某一操作对系统特定数据的更新需要一段时间。这段时间成为“不一致性窗口”。
  • 最终一致性:是弱一致性的一种特例,在这种一致性下系统保证用户最终能够读取到某操作对系统特定数据的更新。

此种情况下,“不一致性窗口”的大小依赖于交互延迟、系统负载,以及复制技术中replica的个数(可以理解为master/slave模式中,slave的个数)。
DNS系统是在最终一致性方面最出名的系统,当更新一个域名的IP以后,根据配置策略以及缓存控制策略的不同,最终所有客户都会看见最新值。

最终一致性模型分类:

  • 因果一致性(Causal Consistency):假如有相互独立的A、B、C三个进程对数据进行操作。进程A对某数据进行更新后并将该操作通知给B,那么B接下来的读操作能够读到A更新的数据值。但是由于A没有将该操作通知给C,那么系统将不保证C一定能够读取到A更新的数据。
  • 读自写一致性(Read Your Own Writes Consistency):用户更新某个数据后,读取该数据时能够获取其更新后的值,而其他用户读取该数据时则不能保证读取到最新值。
  • 会话一致性(Session Consistency):指读自写一致性被限制在一个会话范围内,也就是说提交更新操作的用户在同一个会话里读取该数据时能够保证数据是最新的。
  • 单调读一致性(Monotonic Read Consistency):指用户读取某个数据值,后续操作不会读取到该数据更早版本的值。
  • 时间轴一致性(Timeline Consistency):要求数据的所有副本以相同顺序执行所有更新操作,也称为单调写一致性(Monotonic Write Consistency)。

事务是用户定义的一个数据库操作序列,这些操作要么全不做,要么全做,是一个不可分割的单位,ACID是事务所具有的特性:
原子性(Atomicity):事务中的操作要么都做,要么都不做。
一致性(Consistency):系统必须始终处于强一致状态下。
隔离性(Isolation):一个事务的执行不能被其他事务所干扰。
持续性(Durability):一个已提交的事务对数据库中数据的改变是永久性的。
ACID特性是传统关系型数据库中事务管理的重要任务,也是恢复和并发控制的基本单位。
BASE方法通过牺牲一致性和孤立性来提高可用性和系统性能,其中BASE分别代表:
基本可(Basically Availability):系统基本能够运行、一直提供服务。
软状态(Soft-state):系统不要求保持强一致性。
最终一致性(Eventually consistency):系统需要在某一刻后达到一致性要求。

在这里插入图片描述

数据一致性实现技术

分布式系统在不同节点的数据采用什么技术保证一致性,取决于应用对系统一致性的需求,在关系型数据管理系统中一般会采用悲观的方法(如加锁),这些方法代价比较高、对系统性能影响较大,而在一些强调性能的系统中则会采用乐观的方法。

Quorum系统NWR策略
对于数据在不同副本中的一致性,此策略采用类似于Quorum系统的一致性协议实现。这个协议有三个关键值N、R、W。
N表示数据所有副本数。
R表示完成读操作所需要读取的最小副本数,即一次读操作所需参与的最小节点数目。
W表示完成写操作所需要写入的最小副本数,即一次写操作所需参与的最小节点数目。
该策略中,只需要保证R+W>N,就可以保证强一致性。
两阶段提交协议
两阶段提交协议(Two Phase Commit Protocol,2PC协议)可以保证数据的强一致性,许多分布式关系型数据库管理系统采用此协议完成分布式事务。
两阶段提交协议系统一般包含两类节点:一类为协调者,通常一个系统中只有一个;另一类为事务参与者,一般包含多个,在数据存储系统中可以理解为数据副本的个数。
时间戳策略
基于时间戳,可为每一份数据附加一个时间戳标记,在进行数据版本比较或数据同步的时候只需要比较其时间戳就可以区分它们的版本。
改进时间戳,不依赖单个机器,也不依赖物理时钟同步。该时间戳为逻辑上的时钟。
逻辑时间戳用来确定分布式系统中事件的先后关系。假设发送或接收进程中的一个事件,分布式系统中事件的先后关系可用“->”来表示,例如:若事件a发生在事件b之前,则a->b。该关系满足:
如果事件a和事件b是同一进程中的事件,并且a在b之前发生,那么a->b。
如果事件a是某消息发送方进程中的事件,事件b是该消息接收方进程中接收该消息的事件,那么a->b。
对于事件a、事件b和事件c,如果有a->b和b->c,那么a->c。
如果两个不同的事件a和事件b,既不能得出a->b也不能得出b->a,那么逻辑上认为事件a和事件b同时发生。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot整合FreeMarker

一、FreeMarker简述 在线文档:http://freemarker.foofun.cn/ FreeMarker 也是一款模板引擎技术,它是一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。当然…

创建一个react项目

文章目录 1:命令行输入2:在vs的终端中输入npm start 来启动项目3:删除src目录中的干扰项4:去掉index.js中的严格模式节点JSX介绍JSX中使用js表达式原生js调用三元运算符列表渲染条件渲染三元表达式逻辑&&运算 分支逻辑类名…

Setting up SSH Host ...问题解决

一、问题可能原因: 网速问题导致下载过慢,超时 二、解决方式:手动下载安装 1、确定VSCode commit id,如下图所示 2、拼接请求,下载vscode server包 Arm:https://update.code.visualstudio.com/commit:换…

【AUTOSAR】【通信安全】CRC

目录 一、概述 二、功能说明 2.1 通用行为 2.2 8位CRC计算 2.2.1 8位SAE J1850 CRC计算 2.2.2 8位0x2F多项式CRC计算 2.3 16位CRC计算 2.3.1 16位CCITT-FALSE CRC16 2.3.2 16位0x8005多项式CRC计算 2.4 32位CRC计算 2.4.1 32位以太网CRC计算 2.4.2 32位0xF4ACFB13多…

AIGC产业研究报告 2023——图像生成篇

易观:今年以来,随着人工智能技术不断实现突破迭代,生成式AI的话题多次成为热门,而人工智能内容生成(AIGC)的产业发展、市场反应与相应监管要求也受到了广泛关注。为了更好地探寻其在各行业落地应用的可行性…

jvm之常用命令行工具

写在前面 本文已起看下给我们的Java程序看病常用到的工具都有哪些,通过工具得到指标,通过指标分析病情,从而给出对应的治疗方案。 1:jps/jinfo 用来获取运行的jvm进程信息,一般我们使用该命令来获取进程号&#xff…

CTF权威指南 笔记 -第二章二进制文件- 2.4 -动态链接

目录 静态文件的缺点 动态链接 位置无关代码 延迟绑定 _dl_runtime_reslove 函数定义 深入审视 静态文件的缺点 随着可执行文件的增加 静态链接带来的浪费空间问题就会愈发严重 如果大部分可执行文件都需要glibc 那么在链接的时候就需要把 libc.a链接进去 如果一个libc…

Spark大数据处理讲课笔记3.6 RDD容错机制

文章目录 零、本讲学习目标一、RDD容错机制(一)血统方式(二)设置检查点方式 二、RDD检查点(一)RDD检查点机制(二)与RDD持久化的区别(三)RDD检查点案例演示 三…

Matlab 多项式拟合

一、线性 1、多项式 corrcoef函数 corrcoef函数用来计算矩阵相关系数。 (1)、corrcoef(x):若x为一个矩阵,返回的则是一个相关系数矩阵。 (2)、corrcoef(x,y):计算列向量x、y的相关系数,要求x、y具有相等的元素个数。如果x、y是矩…

2023河南土著双非硕士——毕业季秋招春招就业经验分享(仅限于在河南找工作,毕业想留河南)

作为一名河南土生土长的人,本硕皆就读于河南某双非一本,是一个实打实的河南土著,河南作为互联网就业的贫困环境,相较于CSDN博客上那么多动不动就腾讯、阿里、字节等大厂的就业经验分享,我更想分享一下我在河南省内找工…

百度文心一言正式亮相,数说故事受邀成为首批内测企业

3月16日下午,百度在北京召开新闻发布会,正式推出基于百度新一代大语言模型的生成式AI产品——文心一言,百度创始人、董事长兼首席执行官李彦宏现场展示了文心一言在文学创作、商业文案创作、数理推算、中文理解、多模态生成五个使用场景中的综…

卖期权的时候,我们在卖什么?

一直在思考一个问题,卖期权到底是怎么回事?卖实值期权、平值期权、虚值期权背后的本质有什么区别?卖近期的和远期的期权背后的本质又是什么?我们用沪深300指数期权来研究一下。 我们先从数据上来直观感受一下。上面这个表格是2020-12-09日这…

基于R语言的贝叶斯时空数据模型实践技术

时间-空间数据(以下简称“时空数据”)是最重要的观测数据形式之一,很多科学研究的数据都以时空数据的形式得以呈现,而科学研究目的可以归结为挖掘时空数据中的规律。另一方面,贝叶斯统计学作为与传统统计学…

【OpenCV】 2D-2D:对极几何算法原理

2D-2D匹配: 对极几何 SLAM十四讲笔记1 1.1 对极几何數學模型 考虑从两张图像上观测到了同一个3D点,如图所示**。**我们希望可以求解相机两个时刻的运动 R , t R,t R,t。 假设我们要求取两帧图像 I 1 , I 2 I_1,I_2 I1​,I2​之间的运动,设第一帧到第二帧的运动为…

MiniGPT-4部署过程

文章目录 项目背景部署过程环境配置与文件准备部署推理报错1报错2 项目背景 2023年4月19日,开源项目MiniGPT-4发布,该项目是由KAUST(沙特阿卜杜拉国王科技大学),是几位博士开发的。 项目地址:https://gith…

Spark大数据处理讲课笔记3.4 理解RDD依赖

文章目录 零、本讲学习目标一、RDD依赖二、窄依赖(一)map()与filter()算子(二)union()算子(三)join()算子 三、宽依赖(一)groupBy()算子(二)join()算子&#…

字符设备驱动

字符设备就是按字节流进行读写的设备,读写数据分先后顺序,如点灯,IIC,SPI,LCD等都是字符设备,这些设备的驱动就叫字符设备驱动。 include/linux/fs.h中 file_operations 结构体为内核驱动操作函数集合&…

如何关闭tomcat?tomcat端口号被占用怎么办

我tomcat一跑就报被占用怎么办?我没开tomcat呀!! 这种情况一般是你上一次打开tomcat没有关tomcat服务就关闭了变成软件(如强行关闭正在运行tomcat的idea),这样你在开tomcat就会显示端口号占用了&#xff0…

API 渗透测试从入门到精通系列文章(上)

导语:这是关于使用 Postman 进行渗透测试系列文章的第一部分。 这是关于使用 Postman 进行渗透测试系列文章的第一部分。我原本计划只发布一篇文章,但最后发现内容太多了,如果不把它分成几个部分的话,很可能会让读者不知所措。 所…

SMOKE Single-Stage Monocular 3D Object Detection via Keypoint Estimation 论文学习

论文地址:SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation Github 地址:https://github.com/open-mmlab/mmdetection3d/tree/main/configs/smoke 1. 解决了什么问题? 预测物体的 3D 朝向角和平移距离对于自动驾…