好不easy算法搞定了。小数据測试也得到了非常好的结果,但是扔到进群上。挂上大数据就挂了。无休止的reduce不会结束了。
。。
。。
。。。。
。。
。。。
。。
====================================================================
这才想起还有个combiner!
。!!!。!!
!。!!。!!
!!
!
!!
!
我们知道。MapReduce是分为Mapper任务和Reducer任务。Mapper任务的输出,通过网络传输到Reducer任务端,作为输入。
在Reducer任务中,通常做的事情是对数据进行归约处理。
那么当大量的Mapper结果狂奔而来的时候。Reducer非常多时候是招架不住的,尤其是每个结果size也非常大的时候。如今该Combiner发挥作用了,我们能够把Reducer要做的工作让Combiner来做,这样不仅本地完毕了数据的规约处理,同一时候也大量降低了网络传输负载。传输时间大大缩减能够提高效率。
Reducer端接受的数据就基本是结果了。。
。。。
。。。。
。。
。
。
。。。。
要注意的是,Combiner仅仅在Mapper任务所在的节点执行,不会跨Mapper任务执行。Reduce端接收全部Mapper端的输出来作为输入。尽管两边的归约类是同一个,可是执行的位置全然不一样。
并非全部的归约工作都能够使用Combiner来做。
比方求平均值就不能使用Combiner。由于对于平均数的归约算法不能多次调用。
===================================================================
时间: 2024-11-10 07:14:35