本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.
MapReduce框架简介
- 应用提供大量输入文件, 一个Map函数, 一个Reduce函数, nReduce个
reduce tasks. - RPC服务器启动, 等该worker注册(Register)RPC中. 任务状态为可执行时, 调度器(Schedule)决定如何把task分配给worker和如何容错.
- Master把每个输入文件作为一个Map任务, 每个任务至少调用一次doMap. 这些任务或者直接执行或者由DoTask RPC发射, 每个对
doMap()的调用读取合适的文件, 对每个文件调用map, 对每个map文件最后产生nReduce个文件. - Master对每个reduce人物至少调用一次
doReduce(). doReduce()收集由map产生的nReduce文件(f-*-), 然后对这些文件运行reduce函数. 最终产生nReduce个结果文件. - Master调用
mr.merge(), 合并所有的结果文件为一个输出文件. - Master发送
Shutdown RPC关闭workers, 然后关闭RPC服务器.