map流程

LineRecordReader,Mapper,Context

mapTask---->run-------->setup--------->while(context.nextKeyValue---->LineRecordReader得到map方法需要的的key和value)-------->map---------> context.write(k,v)-------> 分区,hashPartitioner{  getPartition }-------->往环形缓冲区写元数据(分区值。。。)和kv的序列化结果,当缓冲区(最大100M)中的内容大于80%----->spiller首先要把缓冲区中的数据 先按照分区号排序, 再按照K排序(QucikSort,可以重写)------>溢出yarnChild的磁盘目录首先按照分区序号来写,写在同一个文件里,而且附带一个索引文件来表明 0号区的内容偏移量----->不断写,不断溢出  最后形成一堆小溢出文件-------->Merger,归并排序,将多个文件的相同分区放在一起。 把这一堆小文件合并,变成一个整体的文件,到此map 端工作完成。-->cleanup

Fetcher{  fetch( 通过nodemanager提供的shuffle服务.读取map产生的结果文件中,指定的分区信息 ) }----->加载到内存或者磁盘(小的放内存 一般是磁盘)----->Memger 文件合并(归并排序,相同key放在一起)----->一个大文件

 

&Integer.MAX_VALUE  与上整数最大值。01111111111111111111111   0与任何数都是 0  1与任何数都是1, 所以只要 &Integer.MAX_VALUE就是取绝对值

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值