栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

MapReduce的shuffling理解

MapReduce的shuffling理解

MapReduce的shuffling理解

1:官方图解

上图主要分为三个阶段:
Map:分割数据 Reduce:聚合数据 重点在Shuffle(面试)
Shuffing包含:{partition spill(sort+combiner) merge}

shuffling具体过程如下:
1.Map端
1**.Input Split分配给Map
2.Map过程进行处理**,Mapper任务会接收输入分片,然后不断的调用map函数,对记录进行处理。处理完毕后,转换为新的输出。
3.Map的输出结果缓存在内存里
4.内存中进行Partition,默认是HashPartitioner(采用取模hash (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks), 目的是将map的结果分给不同的reducer,有几个Partition,就有几个reducer
5.Sort:内存中在Partition结束后,对于不同分区的数据,会按照key进行排序
6.group by对于排序后的,会按照key进行分组。如果key相同,那么相同key的就被分到一个组中。最终,每个分组会调用一次reduce函数
7.排序分组结束后,相同的key在一起组成了一个列表,如果设置过combiner,就合并数据,减少写入磁盘的记录数(combiner本质就是一个reducer)
8.当内存中buffer(default 512M)达到阈值(default 80%),就会把记录**spill(即溢写)**到磁盘中
9.Map结束时会把spill出来的多个文件合并成一个,merge过程最多10(默认)个文件同时merge成一个文件,多余的文件分多次merge,merge过程是merge sort的算法。
10.Map端shuffle完毕,数据都有序的存放在磁盘里,等待reducer来拿取
2.reduce端
1. Copy phase: reducer的后台进程(default 5个)到被Application Master (Hadoop 2.2)指定的机器上将map的output拷贝到本地,先拷贝到内存,内存满了就拷贝的磁盘
2. Sort phase(Merge phase): Reduer采用merge sort,将来自各个map的data进行merge, merge成有序的更大的文件
3. Reduce

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604916.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号