分布式计算-程序员宅基地

技术标签: 后端  分布式  

分布式计算技术

主要讲述了4种分布式计算



前言

简单总结一下集中分布式计算方式

一、MapReduce

Hapdoop作为一个解决海量数据计算问题的框架,它到底是怎么实现的呢?

1.分而治之的思想

分而治之顾名思义就是把一个大的复杂的任务分为若干个相对简单的小的任务,这些小的任务与原任务有着相似的形势,对这些子问题独立的求解最后再合并即可得到原问题的解。在分布式领域,有类似如下3种问题也适合分而治之的思想:

  • 问题的规模比较大,能分解为几个简单的、同类型的子问题
  • 子问题之间的解相互独立,不包含重叠部分
  • 各子问题的解能够合并得到原问题的解

采用分治法解决该类问题的步骤:

  • 分解原问题。将原问题分解为几个互相独立的、同类类型的子问题。
  • 求解子问题。分别对子问题进行递归的求解
  • 合并解。将子问题求得的解进行合并,得到最终的解

2.MapReduce

MapReduce就是采用了这一思路,MapReduce主要由MRApp(master)、mapper(worker)、reducer(worker)组成,是一个典型的主从模型,其中master的作用是负责分配任务,资源,协调任务的运行,并且为mapper分配map()操作,为reducer分配reduce()操作。mapper的作用就是计算,负责执行子任务。reducer的作用就是将mapper得到的结果进行汇总。

在这里插入图片描述

具体步骤:

  • user 将任务下发到MRAppmaster节点中,并由它将任务进行拆分。例:假设master将函数任务分为5个,其中3个函数任务给mapper, 2个给reducer。集群内的worker节点都有对应任务的副本。注意这里的对应任务是要执行的操作。
  • 接下来就是由MRAppmaster下发前面分好的任务。mapper和reducer的数量分别对应前面划分好的任务数量。
  • 被分配的map()任务的worker开始读取子任务输入的数据,并从数据中抽取出<k,v>键值对,将键值对多为参数传递给map()函数。
  • 将map()函数输出的结果放在环形缓冲区中,这些缓冲区中的数据会被定期的写入本地磁盘,被存储在R个不同的磁盘区。这里的磁盘区数量R与reducer的数量有关。此外,每个mapper结果的存储位置也会上报给MRAppmater节点。
  • 由MRAppmaster节点通知reducer它负责处理的数据在那个分区。然后reducer从对应的分区读取数据,即中间键值对。将这些键值对都读过来后,将它们进行排序,对相同键值对的数据进行组合。这一步的task就是对各mapper的结果进行统计。
  • 将具有相同键值的数据合并之后,就把统计的结果作为输出文件存储在负责的分区中。

二、流计算stream

1.什么是流数据?

流数据就是类似直播产生的音视频等数据流,这些数据如潮水般涌现,是要我们对其进行实时处理,我们将这种数据称为数据流。其主要有下面四个特点:

  • 数据如流水般持续、快速的到达。
  • 数据的规模很高。一般以TB为单位。
  • 对实时性要求很高。
  • 数据的顺序无法保证,无法控制索要处理数据的顺序。

2.stream

在分布式领域,对流数据处理的计算方式叫做stream。一般用于处理数据密集型数据。当前节点对数据进行处理后会立即将结果放到缓存中,并传入下一节点,不会等缓存写满后再发送,以保证及时性。
其工作原理如下:

  • 提交流式作业。由于数据的类型都是同一种,所以每个计算节点都有自己对应的计算逻辑,这些计算逻辑一般不可改变。这一步中还会确定下节点数据转发的规则。
  • 加载流式数据进行计算。
  • 持续输出计算结果。
  • 在这里插入图片描述

三、Actor

1.什么是Actor?

Actor是一种分布式并行计算模型。这种模型有自己的一套规则,规定了Actor内部的计算逻辑,以及多个Actor之间的通信规则,每个Actor都是一个计算单元。
Actor三要素:

  • 状态。Actor的状态是指Actor本身的组件信息,这个信息是收到Actor自身行为所影响的,只会被自己修改。
  • 行为。指的是Actor的计算操作。Actor不能主动去调用别人的操作,但可以根据自身收到的消息来进行对应的操作。
  • 消息。每个Actor都有自己的信箱,用于接收其他Actor消息。这个mailbox一般是按FIFO规则,按顺序对接受到的数据进行处理。

在这里插入图片描述

2.Actor关键特征

  • 实现了更高级的抽象。与面向对象类似,封装了自己的状态和行为。
  • 非阻塞性。异步通信,发送完消息无需等待,便可接着做其他任务。
  • 高并发性。每个Actor只关心本地的mailbox,可以同时进行工作。
  • 无需使用锁。每个Actor每次只能从自己的mailbox中读取一个消息,也就是说Actor内部每次只能处理一个消息。
  • 易于扩展。可以创建多个Actor节点,以减少现有的Actor节点负担。

Actor工作流程:
在这里插入图片描述

但是尽管Actor模型有这么多优点,但它还是并不适合分布式领域所有的计算平台和框架,主要的理由如下:

  • 如果Actor之间存在相互重叠的计算逻辑,那么当更改这部分逻辑的时候会对所有包含这段逻辑的Actor节点进行更改。
  • Actor可动态的创建多个节点,但是这有个弊端就是使得整个Actor模型得行为不断变化。在工程中不利于实现。
  • Actor由于是异步消息模式,所以并不适合于消息处理顺序由严格要求得场景。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/masterfuck/article/details/123714624

智能推荐

leetcode 102——二叉树的层次遍历_leecode树层次遍历-程序员宅基地

文章浏览阅读100次。leetcode 102 —— 二叉树的层次遍历题目描述:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bina..._leecode树层次遍历

【RabbitMQ】RabbitMQ集群搭建(Docker版本)_ddcker rabbitmq3.9.15-程序员宅基地

文章浏览阅读679次。RabbitMQ版本,通常与他的大的功能是有关系的。3.8.x版本主要是围绕Quorum Queue功能,而3.9.x版本主要是围绕Streams功能。目前还有3.10.x版本,还在rc阶段。我们这次选择3.9.15版本。RabbitMQ是基于Erlang语言开发,所以安装前需要安装Erlang语言环境。需要注意下的是RabbitMQ与ErLang是有版本对应关系的。3.9.15版本的RabbitMQ只支持23.2以上到24.3版本的Erlang。_ddcker rabbitmq3.9.15

EMLOG模板山河网站主题分享_emlog主题打包-程序员宅基地

文章浏览阅读119次。介绍:EMLOG模板山河网站主题分享一款不错的简洁大方的emlog主题,模板特点首页具有ajax加载功能,适合用来做资源网、源码网站的模板。使用后台上传/content/templates/激活使用即可自行修改模板的外链信息最后 夜深了 愿明天的你:像向日葵一样,面对阳光努力向上,日子就会变得单纯而美好。网盘下载地址:http://kekewl.org/rTJ4tjh8A2q0图片:..._emlog主题打包

系统物联网的方案及功能设计_物联网系统设计-程序员宅基地

文章浏览阅读1.3k次。使用ESP8266联网获取实时天气信息以及实现Web端和移动端远程监测和控制单片机。_物联网系统设计

JSTL标准标签库 c:choose标签的适用语法_<c:choose>标签用于多个条件的判断-程序员宅基地

文章浏览阅读767次。c:choose标签的适用语法 <% int day=1; //星期几 //将变量day放入域对象中存储 pageContext.setAttribute("day",day); %>标准标签库实现 <c:set var="day" value="9" scope="page"></c:set>使用el表达式获取变量的值 ${day}使用c:choose标签进行多种情况的判断 <c:choose> &_标签用于多个条件的判断

pip安装python第三方库报错显示The read operation timed out_timeouterror: the read operation timed out-程序员宅基地

文章浏览阅读557次,点赞9次,收藏7次。python第三方库的时候返回错误提示:The read operation timed out。其中“XXX”为要安装的第三方库名称。_timeouterror: the read operation timed out

随便推点

Android基本控件和Activity的基本应用_android activity和控件-程序员宅基地

文章浏览阅读189次。Android基本控件和Activity的基本应用Android基本控件TextViewButtonAndroid基本控件TextView<TextViewandroid:id="@+id/name_text_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:gr..._android activity和控件

Java——聊聊JUC中的原子变量类_java原子变量-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏4次。Java——聊聊JUC中的原子变量类_java原子变量

Java实现ftp文件上传工具类及踩过的坑_java ftps 工具类-程序员宅基地

文章浏览阅读834次。一、环境jdk1.8 + springboot2.3.2.RELEASE + commons-net-3.6.jar + commons-lang3-3.8.jar + commons-io-2.6.jar二、添加pom.xml文件依赖<dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.6<_java ftps 工具类

HTML5兼容手机-程序员宅基地

文章浏览阅读754次。web网站如何实现兼容手机一、总结一句话总结:加上这句话即可:<meta name=“viewport” content=“width=device-width,initial-scale=1.0”>。1、移动设备上的三个viewport是哪三个,分别代表什么?ppk把移动设备上的viewport分为layout viewport 、 visual viewport 和 ide..._html5兼容手机

【Linux】零成本在家搭建自己的私人服务器解决方案_家用linux 服务器-程序员宅基地

文章浏览阅读7.1k次,点赞7次,收藏17次。一开始的时候登不进去,说是需要强效网络,然后我不断刷新,终于刷进去了,然后选择了Ubuntu系统进行下载,最后成功了,然后就算apt update | upgrade两操作,根据网上教程做好相关配置,实现了两个功能,第一个功能是远程ssh访问,我在老安卓机上启动了Linux后,直接在PC端。:我翻箱倒柜翻出了家里的机顶盒,经典的中国移动魔百盒,办宽带送的,限制性很强,不办宽带的话系统很多功能被锁死,反正现在家里都能智能电视了,我就开始弄它,先是拆机,_家用linux 服务器

阿里云ACP认证有用吗?-程序员宅基地

文章浏览阅读4.3k次,点赞3次,收藏4次。当然有用的啊!只要是证书都有用的!即阿里云云计算专业认证,是面向使用阿里云云计算产品的架构、开发、运维类人员的专业技术认证,主要涉及阿里云的计算、存储、网络、安全类的核心产品。......