码迷,mamicode.com
首页 > 其他好文 > 详细

【论文总结】mapreduce

时间:2020-03-11 10:40:01      阅读:51      评论:0      收藏:0      [点我收藏+]

标签:计算机集群   strong   each   时间   tin   发送消息   result   就是   节点   

目录

MapReduce
1、MapReduce
1、介绍
2、编程模型
3、实现
4、容错机制
5、技巧
6、思考

MapReduce

  • 本文只对论文中对分布式设计的相关算法做总结交流

    1、介绍

  • MapReduce是谷歌工程师提出的一个编程模型,用于处理、产生大数据集的相关实现。MapReduce在计算上实现是基于计算机集群,这篇论文就是在描述在集群进行计算时资源管理、分配的方法。

    2、编程模型

  • MapReduce是如何使用的?

map(String key,String value):
 //key:文档的名字
 //value:文档的内容
 for each word w in value:
    EmitIntermediate(w,"1");
 
reduce(String key,Iterator values):
//key:一个词
//values:一个计数列表
 int result=0;
 for each v in values:
   result+=ParseInt(v);
 Emit(AsString(resut));
  • map:产生数据(输入),reduce:整合数据(输出)。
  • 通过上面的函数,可以发现map、reduce在获取数据后,再通过一个调用某个接口来进一步实现计算,那么通过下面的介绍,我们来了解集群是如何实现对大规模数据计算。

3、实现

技术图片

  • 概述
    从上图,可看出userprogram在接到计算任务后,会创建子进程分别与master、worker建立连接,此时关于计算的相关细节,userprogram不再参与,控制权将移交给master。其中worker在集群中承担具体计算任务,master负责计算任务及资源的调度。
  • 实现
    首先MapReduce会将计算任务划分成M份,并将划分后的数据传输给其他不同的机器上,同时将输出划分成R份,同样由不同的机器进行维护,计算结束后R份的结果会统一输出到user上
    • a. MapReduce将输入数据划分成M份后,将其拷贝到集群中的其他机器上
    • b. 整个集群中,master会接收一份数据副本,剩余的机器在获得数据后,接受master统一调度,分别承担M任务和R任务。
    • c. master会指派部分机器承担M任务----worker。woeker负责对本机收到的数据片段进行计算,并将结果放在内存的缓冲区中。
    • d. 缓存中的结果会周期性的写入本地磁盘中,其中接收数据的本地磁盘位置会返回给master,master会将这些存有结果数据的磁盘地址转发给R。
    • e. R在收到位置后,通过远程调用方法读取结果数据。在读取过程中,R会对结果数据进行一次整理。
    • f. 整理结果后,R将唯一性(确定)数据存放在一个临时文件中,整个计算结束后,得到的所有数据输出到用户文件。
    • g. 计算结束,master会唤醒用户程序,用户调用输出文件获得最后结果。

4、容错机制

worker故障

worker在一段时里未向master发送消息后,master认为该机失效,将该机上的计算任务分配给其他worker,R也不再在该机上进行数据读取。master会将故障woker设置为初始态,待一切正常,故障worker重新进入调度
master故障

master故障发生,时间则回滚到上一次时间节点,并让另一个master进程执行,并根据需要判断是否需要重新执行计算操作。
备份任务

针对在计算任务结束前,计算的进度可能会因为某一个机器的性能低下拖慢整个计算,那么在计算结束前,master会启动一个备用任务,备用人物同时执行最后这部分数据,原来或者备用的任务完成,整个计算则标记结束。

5、技巧

/待续/

6、思考

/待续/

【论文总结】mapreduce

标签:计算机集群   strong   each   时间   tin   发送消息   result   就是   节点   

原文地址:https://www.cnblogs.com/wlm-198/p/12456035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!