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中

转载于:https://www.cnblogs.com/WRui/p/6709643.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值