- Hadoop 之 Shuffle 机制详解
- Shulffle 含义
- Shuffle 图解
- 官方图解
- 简化图解
- Shuffle详解
- Map 溢写
- 溢出数据
- Reduce 拉取数据
Shuffle 图解 官方图解在 Hadoop 中数据从 Map 阶段传递给 Reduce 阶段的过程叫 Shuffle,Shuffle 是 整个 MapReduce 框架中最核心的部分。
Shuffle 将数据从 Map 阶段输入到 Reduce 阶段的过程,所以 Shuffle 的 作用范围是Map阶段数据输出到Reduce阶段数据输入这一整个中间过程。
简化图解buffer in memory:内存缓冲区
partition ,sort and disk:分区、排序、磁盘写入
merge on disk:在磁盘上合并
Shuffle详解 Map 溢写分为三步流程:
1、Map 溢写数据
2、溢出数据写入磁盘
3、Reduce 拉取数据进行处理
溢出数据1、Map 数据处理后进入 getPartition() 方法,将数据进行分区;
2、分区后的数据以键值对的形式写入环形缓冲区,环形缓冲区左边存放键,右边存放值,环形缓冲区默认大小为100M;
3、当环形缓冲区数据量达到存储的 80% 时,开始溢写数据,80% 就开始溢写是为了减少等待时间;
4、溢写后的数据对索引值按照字典进行快速排序。
Reduce 拉取数据1、溢写后的数据产生两个文件:spill.index、spill.out,为索引文件以及数据文件,Combiner 可选流程作用将传输数据分批传输,使得数据量减小;
2、对数据进行归并排序,归并后的数据依旧可以进行溢写,可以对数据进行N次溢写;
3、溢写后的数据进行压缩并写入磁盘。
1、将数据由磁盘拉入 Reduce 中的内存中,内存不够放入磁盘;
2、将所有数据进行排序,并安装相同的 key 分组;
3、最终将数据放入 Reduce 方法中进行处理。
加入小猿大家庭,QQ:947117563,了解更多基础知识 !!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)