mapreduce原理

map task: 默认通过 TextInputformat(基类Inputformat) 读数据 TextInputformat 通过 RecordReader 调用 read() ,去hdfs上读数据(文件切片),数据的格为K,V。数据返回回来自动调用自定义的map方法。处理完后执行context.write()—-输出到——OutPutCollector —环形缓存区 默认大小100M 缓存达到80%进行hashpartition分区, 调用key compareTo 排序—-spiller,Conbinner,先在map阶段预处理数据—溢出–到文件(文件内数据分区且区内有序)一个溢出会到一个新文件—-Conbinner先在map阶段预处理数据–merge-所有溢出文件 归并排序——大文件map task最终结果文件 —–一个mapTask 的流程。

reduce reducetask—-一个map分区对应一个reduceTask——reducetask去map文件系统下载数据,下载到reducetask工作目录—-在次归并排序,合并文件——同一个key调用一次reduce方法———–GroupingCommparaor(k,nextk)判断KEY是否相同—–reduce(k,values) 方法中的k对应最前面相同k,v的key—context.write(k,v) —–默认TextOutPutFormat(基类OutPutFormat) –-RecordWriter write(k,v) –-写到hdfs上 part-r-00000文件中—–一次reducetask 流程。

map 进入缓存区开始 一直到reduce拿到数据调用之前 –——-Shuffle过程。

组件combinner 使用过程中,注意不能影响最后的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值