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

查看所有标签

猜你喜欢:

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

叠加体验:用互联网思维设计商业模式

叠加体验:用互联网思维设计商业模式

穆胜 / 机械工业出版社 / 2014-11 / 39.00

本书在互联网思维改变一切的背景下,详细介绍了如何运用互联网思维重构商业模式,主要包括以下内容:①互联网经济中的商业逻辑(即“互联网思维”),不仅给出了消费方面的逻辑变革,还给出了在生产端的逻辑变革以及“跨界”的逻辑变革。②给出了一个“三层产品体验模型”,厘清了互联网思维,打造完美终端、云端服务和价值群落三层体验,企业可以选择做不同层面的体验组合,这即是选择了不同的市场策略。但是,企业要基业长青,终......一起来看看 《叠加体验:用互联网思维设计商业模式》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具