憋了好多天不知道毕设做什么,终于拿定主意用MapReduce来改写个算法给老王看交差了,嘿嘿双核都普及了,赶赶时髦~
本来准备自己总结下,结果上网一搜,已经有那么多同志讲解得比我知道的还清楚了,就懒了。。做个引用自己慢慢钻研吧:
1、MapReduce: Simplified Data Processing on Large Clusters by Jeffrey Dean and Sanjay Ghemawat
MapRedue:在超大集群上的简易数据处理 中文版 by 崮崮山路上走9遍
2、Interpreting the Data: Parallel Analysis with Sawzall by Rob Pike, Sean Dorward, Robert Griesemer, Sean Quinlan
海量数据分析:Sawzall并行处理 中文版 by 崮崮山路上走9遍
3、Google's MapReduce Programming Model -- Revisited by Ralf Lammel from MS
4、Can Your Programming Language Do This? from the Joel on Software weblog
你的编程语言可以这样做吗? translated by emu
5、两个评价:(1)by dreamhead,(2)by anonymous [文章本身意义不大,看下面评论,引出了一个并行计算框架的问题]
6、实现:Cat、Nutch(Hadoop)。。。etc.
7、How Google Works,一点题外话,是一系列关于股沟的文章中的一篇,有些意义。
8、还有很多暂时没看到的。。。HEHE~
MapReduce相关的关键字:并行编程(parallel programming),分布式编程(distributed programming),函数式编程(functional programming)
最后,MapReduce不是Googler所强调的一种算法,而是一种编程框架或者说模型(Framework,参考Skeletal Parallelism!)。他简单(思想真的很简单!)而且比较优雅的解决了分布式处理中最头痛的数据相关性问题。以这种思想编程,(在适用范围内)可以比较容易的让你的算法适应多线程或者分布式计算。这也是我准备用他来改写个多线程的Apriori交差的原因啦~
国内的一些类似实现:
O3 Grid - Python based MapReduce cluster for log analysis(我要学动态语言!。。)
ZSU的is03kyh的实现(我周围就没遇到过这种Niubility值极高的淫啊。。以前就算了,今后自己加油,等俺读了Grad也要向这种等级努力。。)