Google 的 MapReduce 论文,真的是做分布式计算绕不过去的一篇。Map 和 Reduce 的思想来自函数式编程,理念其实不复杂:Map 负责拆小块分给节点跑,Reduce 再把结果合起来,完活儿。逻辑挺清晰的,适合大批量数据,像日志、网页索引这些场景就适合。
MapReduce 的模型结构也还挺直观:输入输出都是键值对,Map
函数拿到输入先搞出一堆中间结果,交给系统自动Shuffle
和Sort
,再扔给Reduce
函数做最终汇总。嗯,不用你操太多心,系统自动兜底。
架构设计上也成熟:JobTracker
负责分配任务,TaskTracker
各自干活儿,底层的数据都扔进HDFS,又稳又能容错。就算某个节点突然挂了,任务也能迅速调度到别处继续跑,基本没啥中断。
应用场景挺广的,像 Google 搜索、网页、甚至一些早期机器学习任务都靠它撑着。不过也别指望它啥都能搞,实时流它就不太行,现在都转向 Spark、Flink 这些更灵活的框架了。但 MapReduce 作为开山鼻祖,底层思想你还是得懂。
哦对了,论文里面不少架构细节讲得还挺透的,建议一边看一边画个流程图,理解。Shuffle
和中间数据怎么流转,搞明白之后你看后续的框架,比如Spark RDD
,就会觉得“哦,原来是这么来的”。
如果你正好在入门大数据分布式系统,这篇论文蛮适合收藏下的。建议先通读一遍,再找些应用案例带着理解,效果会更好。