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

查看所有标签

猜你喜欢:

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

常用算法程序集

常用算法程序集

清华大学出版社 / 2013-4 / 69.00元

《常用算法程序集(C\C++描述第5版清华大学计算机系列教材)》编著者徐士良、马尔妮。 《常用算法程序集(C\C++描述第5版清华大学计算机系列教材)》是针对工程中常用的行之有效的算法而编写的,主要内容包括多项式的计算、复数运算、随机数的产生、矩阵运算、矩阵特征值与特征向量的计算、线性代数方程组的求解、非线性方程与方程组的求解、插值与逼近、数值积分、常微分方程组的求解、数据处理、极值......一起来看看 《常用算法程序集》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

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

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具