Hadoop中MR(MapReduce)计算模型


模型架构:
  1. 执行计算任务有两个角色一个是JobTracker,一个是TaskTracker,前者用于管理和调度工作,后者用于执行工作。  
  2. 一般来说一个Hadoop集群由一个JobTracker和N个TaskTracker构成。
  3. 可以理解为shuffle描述着Map task到Reduce task的整个过程
 
 
执行流程:
  1. 每次的计算任务都分为两个阶段,一个Map阶段一个Reduce阶段。(shuffle阶段位于Map和Reduce的中间)
  2. Map阶段接收一组键值对形式的值<key,Value>,然后对这个输入进行处理并输出一组键值对形式的值    (map接收的数据是由InputFormat处理过的先spilt然后再生成键值对)
  3. Reduce接收Map输出的结果进行计算并输出(map过程产生的数据默认写入内存缓冲区,因为在内存里可以提高combine和sort的速度,默认的缓冲区的大小为100MB可以进行配置,但是当缓冲区的内存使用大于一定的值得时候会发生溢写,默认是使用率80%,一个后台的线程就会启动把缓冲区的数据写入到磁盘中,往内存中写入的线程会继续的执行)
  4. 当(Spill)写入线程启动后,会对这80MB空间内的key/value对进行sort。排序是MapReduce模型的默认行为,首先进行key排序,对于key相同的按照value进行排序。
  5. Combine(规约)发生在Spill的阶段本质上Combine就是Reduce,通过Combine可以减少输入reduce的数据量,优化MR的中间数据量
  6. 每次的Spill都会在本地声称一个Spill文件,如果map的数据量很大进行了多次的spill磁盘上对应的会有多个的spill文件存在、当map task 真正的完成的时候,内存缓冲区中的数据也会spill到本地磁盘上形成一个spill文件,所以磁盘上最少会有一个spill文件的存在,因为最终的文件只能有一个,所以需要把这些spill文件归并到一起,这个归并的过程叫做Merge
  7. Merger是把多个不同的spill文件合并到一个文件,所以可能会发生有相同的key的事情,如果这时候设置过Combiner就会直接用Combiner来合并相同的key
  8. reduce分为四个子阶段 ①从各个map task上读取相应的数据 ②sort ③执行reduce函数 ④把结果写到HDFS中


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM