MapReduce为什么shuffle

mapreduce有一个shuffle过程,但是以前一直没有关注,也不清楚为什么有这样一个过程,今天在阅读Hadoop in Action的时候,看到了其中关于shuffle的介绍,结合自己的实际运用以及理解,明白了为什么需要shuffle,以wordcount为例,我们会将documentSet中的不同document放入不同的机器,即放入cluster中,当第一阶段处理完成,即这个cluster中的node完成对本身包含的document的处理之后(独立的),会把结果sendToSecondPhase,如果secondphase是单台机器,那么If the documents are all stored in one central storage server, then the bottleneck   is in the bandwidth of that server.所以我们肯定会将firstphase的结果发送给secondpharse集群,这样才是合理的,不会产生bottleneck,但是第一步的结果如何发送给第二步呢?以wordcount为例,我们会把第一步的结果shuffle,比如pharse_two_a机器会处理以a开头的所有第一步的处理结果,即第一步shuffle之后,会按照语法表与secondpharse的cluster的处理规则来发送结果,wordcount中第一步处理完成之后,shuffle过程即把a开头的发送给pharse_two_a机器,b开头的发送给pharse_two_b机器,c开头的发送给pharse_two_c机器·········,这样就完成了用集群来处理第一步处理完成的结果。Each machine in
phase one will shuffl  e   its results among the machines in phase two

你可能感兴趣的:(mapreduce,C++,c,hadoop,C#)