zoukankan      html  css  js  c++  java
  • MIT 6.824学习笔记1 MapReduce

    本节内容:Lect 1


    MapReduce框架的执行过程:

        master分发任务,把map任务和reduce任务分发下去
        map worker读取输入,进行map计算写入本地临时文件
        map任务完成通知master 告知本地中间结果文件的位置大小信息
        master通知reduce worker
        reduce worker从不同的map worker读取自己负责的部分,这个过程称为shuffle
        reduce worker读取之后会在本地进行排序
        调用用户的reduce方法进行计算
        最终reduce将结果输出到全局的文件系统(GFS)
    
    失败处理的过程:
    
        master故障:不处理,外部程序决定是否重做
        worker故障:master定时ping各个worker,若一段时间ping不通说明崩了
        如果发现了某个worker故障了
            这个worker执行中的reduce和map任务都会被标记为空闲重新分配
            如果是reduce任务并且执行完了那么就忽略不管(reduce生成的结果存在GFS,不会丢)
            如果是map任务并且执行完了,那么就要重置状态,要求重新执行。因为中间文件可能丢失了(map的中间文件存在worker本地)。

    具体过程可以参考这张图:

    MapReduce模型的容错性:map()/reduce()各个函数之间都是独立运行的,没有依赖。所以重新执行也会产生相同的输出。纯函数的这个需求是MR相对于其他并行编程方案的主要限制,然后也是因为这个需求使得MR非常简单。当出错时直接重新执行对应的函数和区块即可

    每个区块尽可能的小(分成尽可能多的块),便于负载均衡、出错重启等

    Ref:    https://zou.cool/2018/11/27/mapreduce/

  • 相关阅读:
    leetcode236
    leetcode139
    leetcode56
    leetcode19
    2018-5-22-SublimeText-粘贴图片保存到本地
    2019-1-29-Sublime-Text-安装中文、英文字体
    2019-1-29-Sublime-Text-安装中文、英文字体
    2018-8-15-WPF-插拔触摸设备触摸失效
    2018-8-15-WPF-插拔触摸设备触摸失效
    2019-10-18-dotnet-修复找不到-System.ServiceProcess-定义
  • 原文地址:https://www.cnblogs.com/pdev/p/11087826.html
Copyright © 2011-2022 走看看