MapRduce:就是一种分布式计算框架(一定数据按行算)
5个阶段:input ,map(里面由kv值,按照k值进行分区) ,shuffle(最难) , reduce(获取前面的v值进行分组) ,output
shuffle过程实现的功能
**分区:**决定当前的Key交给那个reduce进行处理
相同的key,必须由同一个reduce进行处理
默认:根据key的hash值 对reduce个数取余
**分组:**将相同的key的value进行合并
key相等的话,将分到同一个组里
Map Reduce阶段,一行调用一次map方法,一种key调用一次reduce
**排序:**按照key的指导顺序进行排序
详细的过程(非常重要,Map Reduce优化,面试必考)
—》map端shuffle
—》spill:溢写
—》每一个map处理之后的结果将会进入环形缓冲区(内存:100MB)
—》分区:对每一条key和value进行分区(打标签)
hadoop 1 reduce0
hive 1 reduce1
spark 1 reduce1
hbase 1 reduce1
Hadoop 1 reduce0
—》排序:将相同分区的数据进行分区排序
hadoop 1 reduce0
Hadoop 1 reduce0
hbase 1 reduce1
hive 1 reduce1
spark 1 reduce1
—》当环形缓冲区达到阈值80%,开始溢写,将分区排序后的数据溢写到磁盘变成filel</