MIT 6.824 MapReduce

栏目: 编程工具 · 发布时间: 8年前

内容简介:MIT 6.824 MapReduce

学习 MIT 6.824 Lab1 MapReduce ,做下笔记

MapReduce 的思路

  • 把数据分成 M 份,每一份叫做 Mi
  • 启动一个 master 对象,由它来控制如何分配调控
  • master 挑出一个 worker,对 Mi 执行 map 操作,返回一个 KV 数组
  • 然后把 KV 数组分成 nReduce 份存在本地,等待 Reduce 操作。当 map 全部完成后,每个 Mi 产生 nReduce 份结果,每一个叫做 Ri。文件名:mrtmp-JobName-Mi-Ri 其中Mi Ri 分别表示数字,因此这一步会产生 M * nReduce 份文件。
  • 从每个 Mi 中选择一份 Ri。然后根据 Key 排序,把相同 Key 的 Value 合在一起,生成 Key /list(value)
  • 开始 Reduce,输入list(value),最后会生成 R 份文件 mrtmp.JobName-res-Ri
  • 最后 Merge 成一个文件。

作业步骤

  • Part1 完成 doMap 和 doReduce。doMap 完成3,4两个步骤. doReduce 完成5,6两个步骤。
  • Part2 实现 main/wc.go 在Part1的基础上完成函数调用而已。
  • Part3 把 map 和 reduce 的操作变成异步。用到了RPC,用channel 来实现并发控制。

代码笔记

源码

  • common.go 11-32行 :可变参数打印日志,这个方法与 C语言 常用的类似
  • common_reduce.go Line75 :sort.strings 对字符串切片排序
  • commo_rpc.go Line59 :rpc调用方法
  • master.go Line95-99 :当mr.newCond.Broadcast()被调用,此处就被唤醒,否则一直阻塞,mr.wait()所在的逻辑分支才会被唤醒,否则继续阻塞
  • master.go Line15-16 :匿名参数,表示 Master 具有sync.Mutex的接口, 因而 Master 也能调用sync.Mutex的函数. 所以当调用 master.Lock()的时候也不足为奇
  • master_rpc.go Line14 , Line37 :chanel 被close的时候,case <- shutdown 也就被触发了

以上所述就是小编给大家介绍的《MIT 6.824 MapReduce》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

硅谷创投课

硅谷创投课

[美]加里·维纳查克 / 林怡 / 北京联合出版社 / 2017-6 / 52

☆通用电气前CEO杰克·韦尔奇力荐,影响500强企业CMO的美国互联网意见领袖全新力作! ☆《纽约时报》榜单全新畅销书,把握来自硅谷的互联网风口浪潮! ☆70后创投鬼才,影响美国00后一代商业观的网络红人、科技公司天使投资人面对面解答你创投、管理、运营中的 一切困惑! ☆来自无数实战的真实商业意见!年轻人为什么买你的账?投资人凭什么会把钱交给你?企业家更应该做的事到底是什么?告诉......一起来看看 《硅谷创投课》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具