美文网首页
Shuffle机制

Shuffle机制

作者: 一拳超疼 | 来源:发表于2020-07-09 16:55 被阅读0次

题记

本文资料来源于拉钩大数据开发高薪训练营。

shuffle机制在MapReduce整个过程中非常重要,试想如果没有shuffle机制,以wordCount为例,相同的key就没法落在同一个数据分区中,自然不能被同一个ReduceTask处理。

shuffle核心机制: 数据分区,排序,分组,combine,合并等。


shuffle
  1. 从map完成开始,shuffle阶段正式开始。首先map阶段的数据都会先进入一个缓冲区,缓冲区的默认大小是100M,当缓冲区的数据达到80%,就会将这80%的数据溢写到磁盘中作为一个分区文件,剩下的20%空间继续做缓存的工作。
  2. 溢写到磁盘中的数据分区会进行一个Sort,Sort是hadoop默认的机制,这里不深入讨论。
  3. 排好序的分区会合并、然后再进行总体归并排序,由多个分区文件变为一个文件的过程,其目的是减少网络IO的传输。
  4. 然后再Reduce之前,MapTask会将数据输出到Reduce的节点上。这其中是由ReduceTask向MapTask发起HTTP请求,ReduceTask会请求属于自己的数据,这其中是Partitioner起了作用,Partitioner会筛选key到分区,以此将MapTask的满足同一个筛选条件的数据拉取到ReduceTask的节点上,进行Reduce工作。
  5. ReduceTask接收到数据后,也是会先放到内存缓存中,当内存缓存不够也是将数据溢出到磁盘中,接下来类似地将数据进行归并排序,最后按照相同的key进行分组。如果只有一种key,那就是分一个组,如果有多个key,则是在一个文件中,相同的key的数据分开放。
  6. 分组后,shuffle阶段就结束了,接下来就是执行Reduce方法了。

相关文章

网友评论

      本文标题:Shuffle机制

      本文链接:https://www.haomeiwen.com/subject/sjcscktx.html