《分布式技术原理与算法解析》学习笔记day13

技术修行者 技术修行者     2023-02-16     490

关键词:

这篇文章主要讲述分布式计算模式中用的MapReduce,它采用了分治的思想,将大问题,划分为小问题,对小问题并行求解,最后在合并解。

分布式计算模式:MapReduce

什么是分治法?

分治法是将一个复杂、难以直接解决的大问题,分割成一些规模小、可以比较简单或者直接求解的子问题,这些子问题之间相互独立且与原问题形式相同,递归的求解这些子问题,然后将子问题的解合并得到原问题的解。

适合采用分治法的问题有以下特征:

  1. 问题规模比较大或者复杂,且问题可以分解为几个规模较小的、简单的同类型问题进行求解。
  2. 子问题之间相互独立,不包含公共子问题。
  3. 子问题的解可以合并得到原问题的解。

采用分治法的核心步骤:

  1. 分解原问题
  2. 求解子问题
  3. 合并解

什么是MapReduce?

Google提出的MapReduce分布式计算模型,是分治法的典型代表,它一开始被应用于搜索领域,后来被广泛应用到解决各种海量数据的计算问题。

MapReduce分为Map和Reduce两个核心阶段,其中Map对应”分“,即把复杂的任务分解为若干”简单的任务“来执行,Reduce对应着”合“,即对Map阶段的结果进行汇总。

MapReduce拆分后的任务具有以下特征:

  1. 相对于原始任务来说,拆分后的子任务和原任务是同质的。
  2. 多个子任务之间没有依赖,可以独立运行、并行计算。

MapReduce包括三大组件:

  1. Master,负责分配任务、协调任务,并未Mapper分配map()函数操作、为Reducer分配reduce()函数操作。
  2. Mapper worker,负责Map函数功能,执行子任务。
  3. Reducer worker,负责Reduce函数功能,汇总各个子任务的结果。

整个MapReduce的工作流程可以以分为5个阶段:输入、拆分、映射、化简和输出。

什么是Fork-Join模式?

Fork-Join是Java等语言或者库提供的原生多线程并行处理框架,采用线程级的分而治之的计算模式,充分利用多核CPU的优势,以递归的方式把一个任务拆分成多个“小任务”,把多个“小任务”放在多个处理器上运行,即Fork操作,当多个“小任务”执行完成后,在将这些直结果合并起来即可得到原始任务的结果,即Join操作。

Fork-Join模式不能大规模扩展,只适用于在单个Java虚拟机运行,多个小任务虽然运行在不同的处理器上,但是可以互相通信。

《分布式技术原理与算法解析》学习笔记day10

这篇文章主要描述分布式系统中的单体调度机制,它是指一个集群中只有一个节点运行调度进程,并介绍GoogleBorg的单体调度设计思路。调度框架:单体调度什么是调度?分布式系统架构的目的是将多个服务器资源管理起来,对... 查看详情

《分布式技术原理与算法解析》学习笔记day03

这篇文章主要描述分布式互斥方法,包括什么是分布式互斥,分布式互斥地三种方法:集中式方法、分布式方法和令牌环方法。分布式互斥方法什么是分布式互斥?对于同一个共享资源,当一个程序正在使用的时候,不希望被其... 查看详情

《分布式技术原理与算法解析》学习笔记day12

这篇文章主要讲述一种新的分布式调度策略:共享状态调度,它包含多个调度器,每个调度器都拥有整个集群的全局资源状态信息。另外还比较了三种调度策略:单体策略、两层策略和共享状态策略。调度框架:共享状态调度什... 查看详情

《分布式技术原理与算法解析》学习笔记day11

这篇文章继续讨论分布式架构中的调度算法,为了解决单体调度面临的问题,我们引入两层调度。我们会讨论两层调度的工作原理,两种使用了两层调度的解决方案:ApacheMesos和HadoopYARN。调度框架:两层调度为什么会有两层调度... 查看详情

《分布式技术原理与算法解析》学习笔记day14

...据密集型应用,另外文章来探讨了ApacheStorm相关的知识。分布式计算模式:Stream什么是流数据?实时性任务主要是针对流数据处理,对处理时延要求很高,通常需要常驻服务进程,等待数据的随时到来随时处理,以保证低时延。... 查看详情

《分布式技术原理与算法解析》学习笔记day06

这篇文章主要描述在分布式系统下如何实现事务处理,包括三种常见的实现事务的方法:基于XA协议的二阶段提交方法、三阶段提交方法和基于分布式消息的最终一致性方案。分布式事务什么是分布式事务?事务提供了一种机制... 查看详情

《分布式技术原理与算法解析》学习笔记day09

这篇文章主要介绍分布式系统中的非集中式结构,以及我们经常使用的三种基于非集中式架构的解决方案:Akka集群、Redis集群和Cassandra集群。非集中式结构什么是非集中式结构?在非集中式结构中,服务的执行和数据的存储被分... 查看详情

《分布式技术原理与算法解析》学习笔记day22

哈希与一致性哈希在分布式系统中,哈希和一致性哈希是数据索引或者数据分布的常见实现方式。数据分布设计原则在分布式数据存储系统中,做存储方案选型时,一般会考虑以下因素:数据均匀数据稳定节点异... 查看详情

分布式技术原理与算法解析

分布式技术因其高性能、高可用、高扩展等特点,成为AI、区块链、云计算、大数据等众多技术的基石,也因其普适性,在经济性裁员的大背景下,仍然成为各公司中间件团队、实验室等基础部门大规模争抢的人才重地。与火热... 查看详情

郑捷《机器学习算法原理与编程实践》学习笔记(第七章预测技术与哲学)7.3岭回归

7.3岭回归7.3.1验证多重共线性7.3.2岭回归理论7.3.3岭际分析7.3.4k值的判断7.3.5辅助函数 (1)导入多维数据集:加载数据集defloadDataSet(filename):numFeat=len(open(filename).readline().split(‘ ‘))-1#getnumberoffieldsdataMat=[]labelMat=[]fr=ope 查看详情

阅读书单2020

...战(第四版)Spring源码深度解析(第2版)从Paxos到ZooKeeper分布式一致性原理实战MySQL技术内幕InnoDB存储引擎第2版MyBatis从入门到精通MongoDB实战(第二版)应用密码学协议、算法与C源程序深入浅出密码学——常用加密技术原理... 查看详情

郑捷《机器学习算法原理与编程实践》学习笔记(第七章预测技术与哲学)7.1线性系统的预测

 7.1.1回归与现代预测 7.1.2最小二乘法 7.1.3代码实现(1)导入数据defloadDataSet(self,filename):#加载数据集X=[];Y=[]fr=open(filename)forlineinfr.readlines():curLine=line.strip().split(‘ ‘)X.append(float(curLine[0]) 查看详情

深入浅出图神经网络|gnn原理解析☄学习笔记表示学习(代码片段)

...f08;四)表示学习表示学习表示学习的意义离散表示与分布式表示端到端学习基于重构损失的方法——自编码器自编码器正则自编码器变分自编码器基于对比损失的方法——Word2vec词向量模型——Skip-gram表示学习就是用一类方... 查看详情

spark分布式训练原理解析

文章大纲模型训练与分布式框架简介有哪几种分布式训练方式那些机器学习算法可以分布式梯度下降法spark分布式训练源码解读GradientDescent总体代码精简解析DEMOSPARK训练xgboost参考文献模型训练与分布式框架简介基于spark的分布式... 查看详情

郑捷《机器学习算法原理与编程实践》学习笔记(第六章神经网络初步)6.5boltzmann机算法

6.5Boltzmann机算法6.5.1问题的提出6.5.2模拟退化原理6.5.3Boltzmann分布与退火过程6.5.4Boltzmann机类与退火过程   Boltzmann网络初始时,需要根据参数设置一系列的初始值,主要参数在_init_中  (1)构造方法如下classBoltzmannNet(object... 查看详情

大数据需要学习啥样的知识?

...,包括实现和分析协同过滤算法、运行和学习分类算法、分布式Hadoop集群的搭建和基准测试、分布式Hbase集群的搭建和基准测试、实现一个基于、Mapreduce的并行算法、部署Hive并实现一个的数据操作等等,实际提升企业解决实际问... 查看详情

《后端技术面试38讲》学习笔记day13

...抄比特币的主要思路是,构建一个无中心、去信任的分布式记账系统。交易签名只能保证交易不是他人伪造的,却不能阻止交易的发起者自己进行多重交易,即交易的发起者将一个比特币同时转账给两个人,也就... 查看详情

《rpc实战与核心原理》学习笔记day7

这篇文章主要关注服务发现,会讨论基于DNS、VIP、ZooKeeper以及消息总线的服务发现机制,研究出在服务发现需要AP还是CP。08|服务发现:到底是要CP还是AP?我们为什么需要“服务发现”?从高可用的角度出发,在生产环境中,服... 查看详情