MapReduce的工作流程
MapReduce的工作流程如下所述。
(1)将一个大的运算作业拆分成许多个Map任务,并将其分配在多个服务器上并行处理。运行Map任务的服务器通常就是存储数据的服务器。让计算和存储尽量在同一个服务器上完成,这样可以减少数据传输开销。
(2)当一个Map任务运行完成后,会输出键-值对形式的中间结果。这些中间结果经合并同类项后,被分发给多个Reduce任务,然后又在多个服务器上并发执行。
(3)具有相同键的键-值对会发送到同一个Reduce任务去处理。
(4)Reduce任务对中间结果进行汇总计算,得到最终结果并输出到分布式文件系统中。
(5)Map任务之间不会相互通信,Reduce任务之间也不会发生信息交换。
在MapReduce的整个执行过程中,Map任务的输入文件、Reduce任务的处理结果都是保存在分布式文件系统中的,而Map任务处理得到的中间结果则保存在本地的存储设备(如磁盘)中。
只有当Map任务全部完成后,Reduce任务才会开始运行。