分布式处理MapReduce

与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。

MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。

Map输入参数:in_key和in_value,它指明了Map需要处理的原始数据 Map输出结果:一组<key,value>对,这是经过Map操作后所产生的中间结果

Reduce输入参数:(key,[value1,…,valuem]) Reduce工作: 对这些对应相同key的value值进行归并处理 Reduce输出结果: (key, final_value),所有Reduce的结果并在一起就是最终结果

实现机制

 

 

 

(1)MapReduce函数首先把输入文件分成M块

(2)分派的执行程序中有一个主控程序Master

(3)一个被分配了Map任务的Worker读取并处理相关的输入块

(4)这些缓冲到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分成R个区

(5)当Master通知执行Reduce的Worker关于中间<key,value>对的位置时,它调用远程过程,从Map Worker的本地硬盘上读取缓冲的中间数据

(6)Reduce Worker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数

(7)当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序 此时MapReduce返回用户程序的调用点。

posted @ 2021-08-16 13:30  好吗,好  阅读(205)  评论(0)    收藏  举报