文档章节

MIT-6.824 MapReduce

o
 osc_y8yehimr
发布于 2019/03/20 17:12
字数 560
阅读 9
收藏 0

精选30+云产品,助力企业轻松上云!>>>

概述

MapReduce是由JeffreyDean提出的一种处理大数据的编程模型,用户定义map和reduce函数,map函数处理原始数据生成一系列键值对中间数据,reduce函数并合相同key的键值对。

编程模型

整个计算过程输入的是键值对,输出的也是键值对。用户只需要提供两个函数分别是Map和Reduce。 比如要统计大数据文本中的词频,我们可以写出如下的Map和Reduce函数:

map(String key, String value):
    // key: document name
    // value: document contents
    for each word w in value:
        EmitIntermediate(w, "1");
        

reduce(String key, Iterator values):
    // key: a word
    // values: a list of counts
    int result = 0;
    for each v in values:
        result += ParseInt(v);
    Emit(AsString(result));

map函数的参数key, value分别是文本名和文本内容,map函数提取文本的每个单词,每个单词生成一个<w, "1">的键值对。 reduce函数对这些键值对进行并和,产生最终的统计结果。

实现

mapreduece 当用户程序调用MapReduce函数后,将会发生如下动作:

  1. 用户输入的文件将被分成M份
  2. 集群中有一个master,其它的都是worker,总共有M个map任务和R个reduce任务(M和R由用户指定)。master负责将map和reduce任务分配给空闲的worker。
  3. 负责map任务的worker执行用户定义的Map函数,将中间键值对保存到本地,并分成R份,并将位置发送给master。
  4. 负责reduce任务的worker从master得到中间数据的位置,读取数据到本地,调用reduce函数。
  5. 所有map和reduce调用结束后MapReduce调用结束,返回用户程序。最终的结果应该是R个redcue生成的文件。通常这些文件作为下一个MapReduece的输入继续处理。

容错

worker failure:

  1. master周期性的ping worker,如果worker没有相应则标记该worker为failed
  2. 如果一个map任务现在worker A执行,但是失败了,后来在worker B执行。那么后面的Reduce worker从worker B读取中间数据。

master failure: master只有一个,失败几率很小。可以终止MapReduce。

参考资料

  1. https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf
  2. https://www.youtube.com/watch?v=WLad7CCexo8
上一篇: 多目标规划
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
LAB1 partI

序言 1. master.go 可以正常调用Distributed() 和 Sequential()。 Sequential 顺序执行主要用于调试。 2. master : 创建一个 RPC server(master_rpc.go). 等待 worker 注册服务(master.go R...

osc_mnd6q2ay
2019/03/24
2
0
最近在学习的东西

最近在学mit-6.828,操作系统公开课,目前已经完成全部lab,代码目录如下 https://github.com/mjaow/xv6-riscv-fall19 最近在学习+实现自己的正则表达式引擎,目前实现了NFA和DFA版本,同时收...

loda0128
2017/12/28
61
0
6.824 Spring 2020 feb4 MapReduce(2004)笔记

前言 打算跟着 MIT 的20年春季课程节奏一起通过4个 lab 来更加深刻和系统的来认识和实现分布式系统。我会坚持把每个学习节点和心得和笔记给记录下来。 每个 lec 之前一般要先看甩上来的论文,...

piperck
02/06
0
0
MIT-6.824 lab1-MapReduce

概述 本lab将用go完成一个MapReduce框架,完成后将大大加深对MapReduce的理解。 Part I: Map/Reduce input and output 这部分需要我们实现commonmap.go中的doMap()和commonreduce.go中的doR...

osc_y8yehimr
2019/03/20
7
0
MIT-6.824 MapReduce

概述 MapReduce是由JeffreyDean提出的一种处理大数据的编程模型,用户定义map和reduce函数,map函数处理原始数据生成一系列键值对中间数据,reduce函数并合相同key的键值对。 编程模型 整个计...

活在未来的人
2019/03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

es集群笔记

es 集群的默认配置是当集群中的某个节点磁盘达到使用率为 85% 的时候, 就不会在该节点进行创建副本, 当磁盘使用率达到 90% 的时候, 尝试将该节点的副本重分配到其他节点. 当磁盘使用率达到 ...

gaolongquan
6分钟前
4
0
VS Code编写Vue过程中出现空格不规范报错的问题

报错内容: 解决办法: 1.注释或删除这些代码 注释掉之后(重启vue服务),再进行编写的时候,空格不规范的情况下就不会再报错了。 2.如果没在webpack.dev.conf.js文件中找到注释代码就在webpack...

安然_oschina
8分钟前
0
0
域名防封_域名防红_微信域名防拦截

最近微信开始大封杀,不知道原因是什么,可能是因为违规网站太多了吧,很多网站都被错杀了,下面我们聊一下怎样才能避免域名被封杀呢。 在各种不同的域名当中,能够做出了更适合的选择,这些...

戚馨逸
12分钟前
13
0
数据结构(六)——循环链表

一、循序链表简介 1、循环链表的定义 循环链表的任意元素都有一个前驱和一个后继,所有数据元素在关系上构成逻辑上的环。 循环链表是一种特殊的单链表,尾结点的指针指向首结点的地址。 循环...

rainbowcode
15分钟前
13
0
六边形寻路格子绘制

using System.Collections;using System.Collections.Generic;using UnityEngine;public class AdventureIsland : MonoBehaviour{ static AdventureIsland instante; pu......

江湖令
17分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部