2021年贵州南方电网校园招聘考试计算机知识点:编程模型
来源:长理培训发布时间:2020-05-18 09:21:42
编程模型
MapReduce的运行模型如图2-2所示。图中有M个Map操作和R个Reduce操作。
简单的说,一个Map函数就是对一部分原始数据进行指定的操作。每个Map操作都针对不同的原始数据,因此Map与Map之间是互相独立的,这就使得它们可以充分并行化。一个Reduce操作就是对每个Map所残生的一部分中间结果进行合并操作,每个Reduce所处理的Map中间结果进行合并操作,每个Reduce所处理的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的结果集,因此Reduce也可以在并行环境下执行。
在编程的时候,开发者需要编写两个主要函数:
Map:(in_key,in_value) -> {(keyj,valuej) | j = 1……k}
Reduce:(key,[value1,……valuem]) -> (key,final_value)
Map和Reduce的输入参数和输出结果根据应用的不同而有所不同。Map的输入参数是in_key和in_value,它指明了Map需要处理的原始数据是那些。Map的输出结果是一组<key,value>对,这是经过Map操作后所产生的中间结果。在进行Reduce操作之前,系统已经将所有Map产生的中间结果进行了归类处理,使得相同key对应的一系列value能够集结在一起提供给一个Reduce进行归并处理,也就是说,Reduce的输入参数是(key,[value1,……,valuem])的结果。这样,一个Reduce处理了一个key,所有Reduce的结果并在一起就是最终结果。
例如,假设我们想用MapReduce来计算一个大型文本文件中各个单词出现的次数,Map的输入参数指明了需要处理哪部分数据,以<在文本中的起始位置,需要处理的数据长度>表示,经过Map处理,形成一批中间结果<单词,出现次数>。而Reduce函数则是吧中间结果进行处理,将相同单词出现的次数进行累加,得到每个单词总的出现次数。
点击加载更多评论>>