MIT 6.824 MapReduce

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

内容简介: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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

翻转课堂的可汗学院

翻转课堂的可汗学院

萨尔曼·可汗(Salman Khan) / 刘婧 / 浙江人民出版社 / 2014-4-1 / 49.00元

MIT和哈佛毕业的高材生缘何放弃金融分析师工作投身教育事业?YouTube上的“可汗学院频道”至今共吸引了163.3万订阅者,观看次数超过3.55亿次,它为什么如此大受欢迎?创始人萨尔曼·可汗阐述属于未来的教育理念——让地球上的任何人都能随时随地享受世界一流的免费教育! 现行教育模式已有200余年历史,可汗认为,在互联网蓬勃发展、社交网络盛况空前的时代,免费、灵活、适合个体、全球共享的教育才......一起来看看 《翻转课堂的可汗学院》 这本书的介绍吧!

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

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试