首页 > 其他分享 >大数据经典论文解读 - MapReduce

大数据经典论文解读 - MapReduce

时间:2023-03-30 19:13:15浏览次数:40  
标签:map worker 论文 reduce MapReduce 解读 master key

MapReduce

使用MapReduce框架只要实现一个Map函数和一个Reduce函数,Map函数实现映射,接受一个key-value并转换为多个键值对;Reduce是一个化简函数,接收一个key和对应的vallue,然后组成一组新的value输出出去。

map(k1, v1) -> list(k2, v2)
reduce(k2, list(v2)) -> list(v3)

Map函数的输出结果被MapReduce进行一个混洗操作,将Key相同的value整合到一个列表,传给reduce函数。

将key按序排列,不是必须的,而是为了方便技术实现。要合并相同的key,利用硬盘进行外排序是最简单、没有内存限制的key分组办法。

为了隐藏分布式的存在,需要处理3个问题

  1. 服务器间协同与容错
  2. 性能问题:它与GFS都非常容易遇到网络性能瓶颈
  3. 易用性:用于debug

MapReduce 协同

mapreduce通常与gfs在同一个集群,集群中有一个调度系统scheduler。运行一个MapReduce任务就是将整个任务提交给调度系统,让其分配Map函数和Reduce函数,以及让master在不同硬件运行。

运行流程:

  1. 找到GFS对应路径,将路径下所有数据进行分片Split,通常每个片大小64MB,也是GFS一个块大小。然后MapReduce在集群上启动多个程序的fork进程
  2. 这些进程中有一个特殊的master进程,其余都是worker。有M个map任务和R个reduce任务分配给worker处理。master进程复制找到空闲的worker并分配任务。并不是每个任务创建一个新进程,而是给worker分配任务,所以一个worker进程可能顺序执行多个map或reduce任务
  3. map-worker读取分片,将其变为key-value形式,等Map计算完后生成新的key-value缓冲在内存
  4. 缓冲的键值对定期写入本地硬盘,按照一个分区函数分为R个不同区域。这些本地文件位置被worker传给master,再由master将数据地址传给reduce-worker
  5. reduce-worker通过RPC从map-worker的磁盘上抓取数据(map和reduce程序没有直接通信),reduce-worker将中间文件根据key排序,这样相同key的value数据放到一起,也就是shuffle过程
  6. reduce-worker执行Reduce函数,将结果输出到这个reduce分片的最终输出文件中
  7. 所有map reduce完成后,master唤醒启动MapReduce的用户程序,执行剩余用户程序

这是一个Master-Slave架构,worker间不直接通信,而是通过master转达。reducer在取数据时也是得到master传递的数据在mapper的地址,直接到数据所在地址去拿,而非reduce通过rpc调用map所在worker获取数据。

Hadoop1.0中调度系统承担了master的角色,即JobTracker对象,负责分配任务和沟通。worker就是TaskTracker,负责执行map和reduce。这时JobTracker成为了单点瓶颈。
Hadoop2.0中将JobTracker拆分成了调度任务的Resource Manager和监控单个MapReduce任务执行的Application Master,架构变的与论文相同

容错 Fault Tolerance

重新运行 + 写Checkpoints

  • worker失效:master定期ping每个worker,没有响应则换个节点重新运行任务。
  • master失效:当做整个任务失败,需要重新提交任务。一个简单解决方案是,master定时将信息作为一个个Checkpoint写入硬盘

性能优化

为了减少网络传输的数据,将程序运行的位置选择数据附近。GFS知道每个Block的数据在哪台服务器上,将任务分到其上的worker,如果没有则在离他近的、有worker的服务器分配任务。

Reduce与map间也传输数据,使用用户自定义的Combiner函数将map输出结果合并以减小带宽。一台机器上的多个worker进程的结果也可以合并。

标签:map,worker,论文,reduce,MapReduce,解读,master,key
From: https://www.cnblogs.com/zhh567/p/17273243.html

相关文章

  • 微服务架构详解(史上最全图文解读)
    微服务架构详解(史上最全图文解读) 目录微服务架构定义微服务架构特点什么时候需要微服务架构微服务架构组件微服务架构有哪些SpringCloudSpringCloud......
  • AutoEmbedding论文阅读笔记
    问题背景目前推荐系统中,在特征维度上低频特征和高频特征的维度是通过遍历mask特征获得到的auc衰减衡量特征对模型的重要度来决定的.如果想提升模型效果,在field层面上......
  • 毕业论文数据分析方法分类汇总
    今天将常用的数据分析方法进行一个分类汇总说明,整理如下图:1、基本描述统计基本描述统计分析包括频数分析、描述分析、分类汇总;是对收集的数据进行基本的说明。频数分......
  • 为什么Email不会死?Email创始人解读
    短消息、即时信息、Facebook、Twitter……我们有很多传递消息的工具,但是我们一直没有放弃Email,为什么,Email创始人表示是因为这些工具都不能完全代替Email。全世界累计34亿E......
  • Meta最新语言模型LLaMA解读
    LLaMA模型调研目录LLaMA模型调研1模型介绍1.1数据来源1.2网络结构2模型训练3模型部署3.1环境设置3.2下载模型3.3模型推理4参考资料1模型介绍LLaMA是Facebook......
  • 源码解读之FutureTask如何实现最大等待时间
    预备知识:Java线程挂起的常用方式有以下几种Thread.sleep(longmillis):这个方法可以让线程挂起一段时间,并释放CPU时间片,等待一段时间后自动恢复执行。这种方式可以用来......
  • Word导出PDF-用于学术论文
    ......
  • [重读经典论文]GoogLeNet——Inception模块的诞生
    1.前言GoogLeNet,也被称为InceptionV1网络,由Google公司的研究员在2014年的论文《Goingdeeperwithconvolutions》提出。本论文提出了Inception模块,引入并行结构和不同......
  • 【A-005】基于SSH的校园网上订餐系统(含论文)
    开发环境:Eclipse/MyEclipse、Tomcat8、Jdk1.8数据库:MySQL项目介绍:为了顺应时代潮流的发展,便捷人民的生活,提高群众的生活质量,本系统应运而生。在了解了相关线上网上订餐......
  • MapReduce Shuffle源码解读
    MapReduceShuffle源码解读相信很多小伙伴都背过shuffle的八股文,但一直不是很理解shuffle的过程,这次我通过源码来解读下shuffle过程,加深对shuffle的理解,但是我自己还是个......