这是中国大学MOOC中的大数据算法课程笔记
实际上Google已经宣布弃用MapReduce,但是它作为一种并行处理框架,仍然在很多地方得到了广泛的应用。还有一个重要的MapReduce实现平台,就是Hadoop平台,大家仍然可以在上面使用。
这一讲是从算法设计的角度来讲解MapReduce。
这次分为下面4个内容:
1、MapReduce概述
2、字数统计
3、平均数计算
4、单词贡献矩阵的计算
一、MapReduce概述
MapReduce是由Google公司开发的分布式编程模型,在2004年推出。这个编程模型的目的是给一些并不熟悉并行编程的程序员提供一个编程框架,使得他们可以容易地编写并行程序,运行在成百上千上万的机器集群上。
MapReduce实现了两个主要功能
Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集。
Reduce是把从两个或更多个Map中,通过多个线程、进程或者独立系统对并行执行处理的结果集进行分类和归纳。
在这个过程中,用户需要定义Map和Reduce函数
在Map过程和Reduce过程中间,需要对key/value对按key进行聚集,reduce函数被应用与每个组。
这样每个分组都是独立的,可以用分布式大规模并行的方式进行处理。
上图是MapReduce过程的示意图。其中combine操作和partition是可选的。
partition为