MapReduce是由JeffreyDean提出的一种处理大数据的编程模型,用户定义map和reduce函数,map函数处理原始数据生成一系列键值对中间数据,reduce函数并合相同key的键值对。编程
整个计算过程输入的是键值对,输出的也是键值对。用户只须要提供两个函数分别是Map和Reduce。
好比要统计大数据文本中的词频,咱们能够写出以下的Map和Reduce函数:函数
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函数的参数key, value分别是文本名和文本内容,map函数提取文本的每一个单词,每一个单词生成一个<w, "1">的键值对。
reduce函数对这些键值对进行并和,产生最终的统计结果。大数据
当用户程序调用MapReduce函数后,将会发生以下动做:code
worker failure:blog
master failure:
master只有一个,失败概率很小。能够终止MapReduce。pdo