MapReduce详解

一、map task阶段,每个task有以下三个部分组成

1.InputFormat阶段:对输入切分,并转化为key value对,传给mapper。包括text input format、sequence input format、hbase input format是hbase提供的三类input format,开发者也可以自己实现

2.mapper阶段:继承map类,用户定义的业务逻辑,把输入的key value转化为另外的key value

3.partitioner阶段:决定mapper阶段输出的每一个key value交由哪些reducer处理,默认是hash partitioner

二、reduce阶段,每个reduce task由以下四部分组成

1.将map输出的数据远程拷贝到reducer

2.把相同key的数据聚合在一起,然后交给reducer

3.reducer处理,用户实现逻辑

4.output format输出结果


map的输出首先放入内存的buffer中,当达到一定阈值的时候就会启动后台进程将数据写到本地磁盘上,写磁盘过程中要做三件事:

1.分片:partitioner决定将每个map输出的kv对分配给哪个partition进而分配给哪个reducer

2.排序:对每一个分片中的kv进行排序

3.combine:局部reducer,节省磁盘和网络io

combine结束之后就会将数据写到磁盘上,当磁盘上的文件数量达到一定阈值后,会对这些文件进行归并排序,并进行局部reducer


reduce阶段

reducer去partition上拉取对应的文件放到磁盘上,然后进行归并排序(即相同key的kv对聚合在一起)合并成大文件,将大文件交给reduce处理,然后将结果输出到output format




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值