MapReduce超详细内部核心工作机制

比如说我们需要MR去对hdfs的...../input/file1,2,3,4,5.....的很多文件进行处理,首先在提交MR程序的时候Job客户端会根据你写的目录去扫描所有的文件。按照block size进行分片的划分。

然后,不同的map task 并行的去处理这些分片。

假设map task 0 去处理split 0 :

首先,TextInputFomat将split0读进来,然后一行一行的不停的读,同时处理并且将处理的结果同时放入的环形缓冲区,当环形缓冲区中存放到达阈值0.8(可设置)时,另外一个线程对缓冲区的kv进行分区、排序之后写进磁盘里。每一行都如此操作,都产生的是有分区并且排序的kv,这样长生了很多最后还得需要合并(如果有conbiner的话还会进行聚合)。最终一个map task 就形成了一个有分区且排序的多个kv对,写到nodemanager的web程序目录中,共reduce通过http进行copy。

这样下来,很多的map产生了很多的kv,kv,kv。reduce通过http,reduce task 0 就把0号分区的内容全拉去过来,reduce task n就把n号分区内容拉去过来,然后在进行合并,排序。最终聚合输出到HDFS中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值