Hadoop-HDFS MapTask 工作机制
·
MapTask工作机制⭐⭐⭐

默认缓冲区大小:100M
溢写之前需要进行排序,排序方法为:快速排序
最后合并:归并排序
总结:
Mapper执行了Context.write之后进入sort阶段
sort阶段分为:Collect、溢写阶段、combin阶段
collect阶段,调用OutPurCollector中的MapOutPutBuffer作为缓冲区。MapOutPutBuffer初始化大小为100M,溢写阀值为0.8,需要收数据信息。 被收集后,不仅存储key-value的meta信息,包括索引和分区号。

溢写阶段:
当写入缓冲区的数据达到溢写阈值时,再溢写钱,安装分区,依次溢写。
每个分区的数据,会根据kye进行排序;使用快速排序,不会于移动数据内存位置,而是记录索引,根据排序后的索引顺序溢写。
combine阶段:
将多次溢写产生的临时文件合并为一个最终的总文件,而且保证总文件分区内部有序,最后在合并多个文件的相同分区时,使用归并排序
为什么叫环形缓冲区
缓冲区没有形状,只是一块内存,环形只是为了便于理解。溢写时,内存中的位置不是按内存地址顺序写出,而且其余数据元素不需要移动器存储位置。所以,后来的数据会补充空位。
更多推荐

所有评论(0)