实现语言:GO version 1.9
阅读论文:MapReduce: Simplified Data Processing on Large Clusters
主要思想:用户定义map函数来处理key/value键值对来产生一系列的中间的key/value键值对,再定义一个reduce函数用来合并有着相同中间key值的中间value。git
下面这张图比较好的展现了MapReduce的执行过程。
例如要计算一个长文章中每一个单词出现的次数,能够先在Map函数中计算出每一个单词出现的频次(都是1),即生成 ("hello","1");("love","1")......这样的中间键值对。再由 reduce函数处理这些中间文件,将相同的单词的"1"加起来,获得每个中间文件中每个单词的个数,并产生一个输出结果文件。后面还会有一个merge函数会统计全部的输出结果文件。并发
Lab1共分为五个部分
Part I+Part II:以串行方式实现一个简单的MapReduce程序,用于统计每一个单词出现的次数
Part III:前两部分map和reduce阶段的task都是串行执行的,在这部分实验中要将这些task改成并发执行。
Part IV:处理并发执行的执行失败的任务
Part V:选作部分,实现新的mapF和reduceF,统计某word在哪些文档中出现过函数
git clone git://g.csail.mit.edu/6.824-golabs-2018 6.824
cd 6.824
ls
Makefile src测试
最终五个试验能够运行main/test-mr.sh脚原本所有进行检验,若都经过,则Lab1已经能完成了 cdn