【论文总结】MapReduce

目录

    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、实现

    MapReduce

    • 概述
      从上图,可看出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、思考

    /*待续*/
    posted @   王磊明  阅读(567)  评论(0编辑  收藏  举报
    编辑推荐:
    · AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
    · 基于Microsoft.Extensions.AI核心库实现RAG应用
    · Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
    · 开发者必知的日志记录最佳实践
    · SQL Server 2025 AI相关能力初探
    阅读排行:
    · 震惊!C++程序真的从main开始吗?99%的程序员都答错了
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 单元测试从入门到精通
    · 上周热点回顾(3.3-3.9)
    · winform 绘制太阳,地球,月球 运作规律
    点击右上角即可分享
    微信分享提示