简述MapReduce执行过程?

简述MapReduce执行过程?

Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集;Reduce是把两个或更多个Map中通过多个线程、进程或独立系统并行执行处理的结果集进行分类和归纳。
MapReduce的执行过程如下:
(1)数据预处理:在任务开始前,首先调用类库,将输入文件分为多个分片。
(2)任务分配:JobTracker为集群中空闲的节点分配Map任务或者Reduce任务。设集群中有M个Map任务和R个Reduce任务(Reduce任务数通常小于Map任务数)。
(3)Map任务:Mapper 读取自己所属的文件分片,将每一条输入数据转换为键值对,使用Map函数对每一个键值对进行处理,得到一个新的键值对,作为中间结果缓存在当前节点。
(4)缓存文件定位:Map任务得到的中间结果被周期性地写入Mapper所在的本地硬盘中,并把文件的存储位置信息经由JobTracker传递给Reducer。
(5)Reducer 拉取文件:Reducer 通过位置信息到相应的Mapper处拉取这些文件,将同一key对应的所有取值合并,得到键值组。
(6)Reduce 任务:Reducer 将所读取到的键值组使用Reduce 函数进行计算,得到最终结果并将其输出。
(7)结束:当所有的Map任务和Reduce任务运行完毕后,系统会自动结束各个节点上的对应进程并将任务的执行情况反馈给用户。

你可能感兴趣的:(hadoop,hadoop)