使用MapReduce进行迭代计算,最为直接的方法是,将多个MapReduce任务组成链。这种方式需要一个额外的MapReduce任务对迭代进行控制,而且,迭代中会进行多次I/O操作(相对于Hadoop而已)。为了在根本上解决这些问题,提出了Hadoop适于迭代计算的改进版——HaLoop。
有关迭代MapReduce一些比较好的资料:
- MapReduce Simplied Data Processing on Large Clusters
- Hadoop环境的安装 By 徐伟
- Parallel K-Means Clustering Based on MapReduce
- 《Hadoop权威指南》的第一章和第二章
- 迭代式MapReduce框架介绍 董的博客
- HaLoop: Efficient Iterative Data Processing on Large Clusters 中文解读
- Twister: A Runtime for Iterative MapReduce
- 迭代式MapReduce解决方案(一)
- 迭代式MapReduce解决方案(二)
- 迭代式MapReduce解决方案(三)
- Granules: A Lightweight, Streaming Runtime for Cloud Computing With Support for Map-Reduce
- On the Performance of Distributed Data Clustering Algorithms in File and Streaming Processing Systems
- Spark: Cluster Computing with Working Set
- iMapReduce: A Distributed Computing Framework for Iterative Computation
- 《Hadoop权威指南》的第三章到第十章
- Map-Reduce-Merge: Simplified Relational Data Processing on Large Clusters
- Clustering Very Large Multi-dimensional Datasets with MapReduce
Ps:简单讲解一下上面的流程,MapReduce计算模型就是Google在(1)中提出来的,一定要仔细看这篇论文,我当初因为看的不够仔细走了很多的弯路。Hadoop是一个开源的MapReduce计算模型实现,按照(2)来安装,以及跑一遍Word Count程序,基本上就算是入门了。(3)这篇文章价值不大,但是可以通过其看一下K-Means算法是如何MapReduce化的,以后就可以举一反三了。(4)的作用就是加深对(1-3)的理解。从(5)开始就可以进入迭代MapReduce的子领域了,董是这方面的大牛。(6)(7)是(5)中提到的两篇论文,(5-7)都要仔细的看,把迭代MapReduce的基础打牢。(8-10)也是董的文章,加深一下对迭代MapReduce问题的理解。(11)(12)是Jaliya Ekanayake、Shrideep Pallickara合作的文章,他们是国外迭代MapReduce领域的发文章最多的两个人。(13)是伯克利大学的迭代MapReduce的文章,Spark是所有实验室产品中唯一已经商用推广的,赞!(14)这篇文章,我看的不是很细致,但是Collector的灵感就是来源于这篇文章。这个时候估计你已经有自己的解决方案了,要编程实现自己的设计了,需要仔细的看(15)了。(16) Map-Reduce-Merge咱们实验室曾经做过的一个问题。(17)这篇文章+Canopy算法,可以得出一些关于用MapReduce实现高质量数据抽样的思路。
大部分内容源自:http://prinx.blog.163.com/blog/static/190115275201211128513868/