hadoop-MapReduce工作流程

1.MapReduce进程

  一个完整的MapReduce程序在分布式运行时有三类实例过程

  1.1 MrAppMaster:负责整个程序的过程调度及状态协调;

  1.2 MapTask:负责map节点的整个数据处理流程;

  1.3 ReduceTask:负责reduce阶段的整个数据处理流程;

2.工作流程图

  

   

3.过程详解

  3.1 源文件,也就是多个文本文件;

  3.2 形成一个job等准备工作;

  3.3 提交切片信息;

  3.4 计算出mapTask个数; 

  3.5 默认使用TextInputFormat从源文件读取信息;

  3.6 经过mapper逻辑分成key,value格式;

  3.7 mapTask手机网民的map()方式输出的KVUI,放到内存缓冲区,Shuffle中的缓冲区大小会影响MapReduce程序的执行效率,原则上说,缓冲区越大,磁盘IO的次数越少,执行速度就越快;缓冲区的大小可以通过参数调整,参数:io.sort.mb,默认100M,当到达百分之八十的时候就会溢出;

  3.8 从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件,溢出的过程会执行分区,排序,溢出到本地磁盘文件已经是分区排序好的,然后会支持combiner逻辑代码;

  3.9 多个溢出文件会被合并成大的溢出文件;

  3.10 reducetask根据自己的分区号,去各个mapTask机器上区相应的结果分区数据;

  3.11 reducetask会取出同一个分区的来自不同mapTask的结果文件,reducetask会将这些文件在进行合并(归并排序);

  3.12 合并成大文件后,shuffle的过程也就结束了,后面进入reducetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的reduce()方法);

  3.13 如果有需求的话再进行分组,然后输出结果;

原文地址:https://www.cnblogs.com/wnwn/p/12620205.html