300字看懂的MapReduce原理

声明:本博文图片均出自网络,若侵权联系我删。

先上图。
这里写图片描述

这里写图片描述
这里写图片描述
作为hadoop的核心模块,首先切入点为mapreduce。
可以看出在MapReduce的执行过程分为两个任务一部分是map task 一部分是reduce task。,Inputformat函数主要的功能有两个第一个是数据切分,按照用户编写的MapReduce函数中的切分策略进行将数据进行切分,切成若干个split。第二个功能是将输入到map的数据进行key/value对分离。每个split都有一个map task处理,也就是说split的个数决定了map task的个数。map()函数处理完后,对数据进行partition,partition的数目是由reduce task 的个数决定的。这些数据都被存入到本地磁盘中,接下来将被reduce task来处理。
Reduce task大致分为三个阶段。
第一个阶段(shuffle):从远程节点上读取map task 的数据。Map task 的中间数据不是已经存储在本地磁盘了吗,为什么还要从远程节点读取数据?这是因为inputsplit切分时后,可能导致一个大文件对应的block对应整个hadoop集群,我们不能吧所有的数据都能进行本地化,所以总有一些节点来自于远程节点。其实为了更好的实现数据本地化,在切分时一般使split和block大小相同。
第二阶段:按照map task中间结果的key对key/value对进行conbine与sort。
第三阶段:调用reduce()来进行处理,处理后的结果最终保存在HDFS中。

其实MapReduce的架构是这样的:这里写图片描述

要明确的就是,map()和reduce()是用户按照自己的需求编程的部分,其他都是hadoop框架自己实现的,包括上图中的作业提交的过程,监控、调度等。下一篇会总结下hadoop框架作业提交的详细原理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值