《分布式技术原理与算法解析》学习笔记Day13
2023-03-31 10:38:03 时间
分布式计算模式:MapReduce
什么是分治法?
分治法是将一个复杂、难以直接解决的大问题,分割成一些规模小、可以比较简单或者直接求解的子问题,这些子问题之间相互独立且与原问题形式相同,递归的求解这些子问题,然后将子问题的解合并得到原问题的解。
适合采用分治法的问题有以下特征:
- 问题规模比较大或者复杂,且问题可以分解为几个规模较小的、简单的同类型问题进行求解。
- 子问题之间相互独立,不包含公共子问题。
- 子问题的解可以合并得到原问题的解。
采用分治法的核心步骤:
- 分解原问题
- 求解子问题
- 合并解
什么是MapReduce?
Google提出的MapReduce分布式计算模型,是分治法的典型代表,它一开始被应用于搜索领域,后来被广泛应用到解决各种海量数据的计算问题。
MapReduce分为Map和Reduce两个核心阶段,其中Map对应”分“,即把复杂的任务分解为若干”简单的任务“来执行,Reduce对应着”合“,即对Map阶段的结果进行汇总。
MapReduce拆分后的任务具有以下特征:
- 相对于原始任务来说,拆分后的子任务和原任务是同质的。
- 多个子任务之间没有依赖,可以独立运行、并行计算。
MapReduce包括三大组件:
- Master,负责分配任务、协调任务,并未Mapper分配map()函数操作、为Reducer分配reduce()函数操作。
- Mapper worker,负责Map函数功能,执行子任务。
- Reducer worker,负责Reduce函数功能,汇总各个子任务的结果。
整个MapReduce的工作流程可以以分为5个阶段:输入、拆分、映射、化简和输出。
什么是Fork-Join模式?
Fork-Join是Java等语言或者库提供的原生多线程并行处理框架,采用线程级的分而治之的计算模式,充分利用多核CPU的优势,以递归的方式把一个任务拆分成多个“小任务”,把多个“小任务”放在多个处理器上运行,即Fork操作,当多个“小任务”执行完成后,在将这些直结果合并起来即可得到原始任务的结果,即Join操作。
Fork-Join模式不能大规模扩展,只适用于在单个Java虚拟机运行,多个小任务虽然运行在不同的处理器上,但是可以互相通信。
相关文章
- 怎么用jupyter读取本地文件
- 和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓
- 和12岁小同志搞创客开发:手撕代码,做一款火焰报警器
- 异或运算的巧用 → 不用额外的变量,如何交换两个变量的值?
- 三个印度人改变压缩算法,一意孤行整个暑假,却因简单申不到经费
- Flask的Blueprints和Views
- Ubuntu系统下安装windows教程
- S11总决赛那晚,B站SRE为活动保障都做了些啥?
- 2021-11-30:给定一个数组arr,当拿走某个数a的时候,其他
- 雪花算法对System.currentTimeMillis()优化真的有用么?
- yum工具对软件包安装,删除,更新命令方法
- python plot()函数的基本介绍
- Centos8中如何更改文件夹中多个文件的扩展名
- 内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO
- 如何在 Linux 中以脚本模式运行 Top
- nginx反向代理获取客户端的真实IP和域名
- Linux如何远程拷贝,限速和断点续传
- 一条命令安装Windows Subsystem for Linux
- Linux定时器自动运行命令的工具
- Linux基础之查看、添加、修改、删除用户命令方法