大略的把google的论文看完了,需要几个实例形象地了解一下map reduce这种并行计算模型.
map reduce实例分析,有待详细研究计算模型
http://hi.baidu.com/cccomeon/blog/item/e2aac8560577285e574e007e.html
基本理解,字数统计是很直观的例子。
map(String key, String value):
// key: document name
// value: document contents
for each word w in value:
EmitIntermediate(w, "1");
reduce(String key, Iterator values):
// key: a word
// values: a list of counts
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
有多个文档,map方法,将不同的文档映射到不同的机器去统计,产生中间结果。中间结果为键值对列表:me 100次、you 50次,并根据key对列表排序。reduce方法,统计某个特定的词you的出现次数,到不同的map机器上去读取you的出现次数,并且累加,最终得出you的出现次数。
抽象的模型表示如下:
map (k1,v1) → list(k2,v2)
reduce (k2,list(v2)) → list(v2)