序
本来读Google MapReduce是老师布置的任务,但是第一我是那种要么就不做事要么就要把事做好的人,第二我本来就有意向向大数据方向发展所以好好的看了一下论文,发现我现在的水平还是不行,感觉论文读起来晦涩难懂很多地方不清楚。而我也查了许多资料来去了解MapReduce,发现其实MapReduce的底层原理其实并不是很复杂,接下来我就谈一谈论文里的要点和我的一些看法和感想。
论文要点
介绍
第一段介绍说了为什么要开发这个编程模型,在作者开发模型前Google的程序员每天要处理海量的数据,如文章的抓取,web请求日志,还有计算处理各种类型的衍生数据,如倒排索引,web文档的图结构的各种表示形势、每台主机上网络爬虫抓取的页面数量的汇总、每天被请求的最多的查询的集合等等。而这些数据处理其实并不困难在概念上,但是由于数据量太过于庞大而导致这样的简单问题的数据处理也变得很困难,并且只能将数据分布在成百上千的主机上完成.
而为了解决上述的问题,作者计划设计一个新的抽象模型,使用这个抽象模型可以抽象出并行计算、容错、数据分布、负载均衡等复杂问题,而使使用者只需要关心想要执行的简单运算(计算机领域的抽象思维起了大作用)。
编程模型
MapReduce对于使用者就像一个数据通道,数据从这边进去在比较短的时间内(如果你的计算机数量足够多的话)在另一端会出来已经处理过的数据了。而实现原理我就不细讲了(细讲我也讲不清楚)大体是用户把数据传入然后MapReduce库先把文件划分为很多份然后再产生一个key/value pair的集合,随后将集合传递给reduce函数而用户自定义的reduce函数数调用只产生 0 或 1 个输出 value 值。通常我们通过一个迭代器把中间 value 值提供给 Reduce 函数,这样我们就可以处理无法全部放入内存中的大量的 value 值的集合。
以下为转载的v_JULY_v的文章MapReduce技术的初步了解与学习
举例说明
相信几乎没有人喜欢看一堆只写概念的文章。本文将通过实例来充分解释清楚MapReduce这个模型。
先从最最简单的例子说起吧。假设我们有一组数据