云计算
怎样理解MapReduce中shuffle,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
概念解释:
shuffle:简单的名称称为 混洗。 事实上shuffle是一个非常非常简单的概念。简单点来说就是洗牌。
shuffle:按照固定的规则,就【key,value】而言。
前提
由于之前一直都是使用的 Hadoop1 ,并未使用 Hadoop Yarn,所以有关shuffle的机制,还请参考最新的底层API
1 : 不管是在Map端,还是Reduce端,不管是Hadoop MapReduce 还是Storm 。 对于数据的内部处理,很多时候都需要
对于是底层的 内存和磁盘做出一个合理的取舍。
Map端:
1 : 数据并不是简单的把他直接的写到了磁盘,这个过程比较复杂,他利用了缓冲的方式写到了内存,并且出于效率上的考虑,进行了预排序。
2:每一个默认的Map任务都会有一个环形的缓存区。这个缓存区用来持有Map的输出,我印象中是100M左右, 一旦达到的固定的必烈,那么就会把内容写到磁盘之中,在写磁盘的过程之中,Map输出继续被写入到缓冲区。
3:在写入到缓存区之前,会将这个数据进行一次分区和排序(这个分区和排序将会按照reduce的对应关系来生成)
4:关于这个分区的数据将通过Http的协议来传递给 Reduce端。
Reduce端:
Reduce端口的第一个阶段是:copy 阶段,也就是说我们需要把数据从Map端口copy到Reduce端口。 如果Map的端口输出相当的小,那么就会被复制到 Reduce端。
其次:在拉取到数据之后,我们将进入到了:排序的阶段。 sort phase 阶段,更恰当的来说,是一个合并的阶段,因为排序的阶段已经在Map 端口完成了。只需要在reduce端合并就可以了
对于MapReduce,之前我也是能实现类qq圈子算法,对于算法,我也是整本算法导论的人。而,如今却忘的一干二净。记忆会消失,不需要的事物会遗忘。
看完上述内容,你们掌握怎样理解MapReduce中shuffle的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!