MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,应用于大规模的演算法图形处理和文字处理。Google上,超过一万个不同的项目已经采用MapReduce来实现,这些项目往往都需要输入大量的数据,MapReduce的作用就是运用定义好的框架合并衍生数据。
举个例子,更直观的认识MapReduce的优点。
查找过去十年的有关大数据的论文中出现的高频辞汇,有什么办法?
方法一:将所有论文按顺序遍历(先不论机器的内存,需要开多大的数组),统计每个辞汇出现的频率,最后比较一下大小。这种方法最为直观和简单,但花费的时间最多。
方法二:设置一个多线程,同时遍历多篇论文。时间上比方法一要快很多,但这种方法是在一台PC机上实现,同步共享数据,需要考虑重复统计文件这些问题。
方法三:将这些数据分成N份,在一个大的PC机集群上遍历,最后将数据汇总。这种方法所需的时间更少,遍历这种操作写个小程序就可以实现,但将数据分到每个机器上和最后的整合要略为麻烦。
方法四:MapReduce在方法三的基础上进行优化,它的框架已经定义了如何拆分数据集、数据传输和最后的整合,我们所需要做的定义用户程序。