1、mapreduce排序中排序发生在哪几个阶段?这些排序是否可以避免为什么?
答:一个mapreduce排序作业由Map阶段和Reduce阶段两部分组成,这两阶段会对数据排序从这个意义上说,mapreduce排序框架本质就是一个Distributed Sort在Map阶段,Map Task会在本地磁盘输出一个按照key排序(采用的是快速排序)的文件(中间可能产生多个文件但最终会合并成一个),在Reduce阶段每个Reduce
Task会对收到的数据排序,这样数据便按照Key分成了若干组,之后以组为单位交给reduce()处理很多人的误解在Map阶段,如果不使用Combiner便不会排序这是错误的,不管你用不用CombinerMap Task均会对产生的数据排序(如果没有Reduce Task,则不会排序
实际上Map阶段的排序就是为了减轻Reduce端排序負载)。由于这些排序是mapreduce排序自动完成的用户无法控制,因此在hadoop /question//answer/
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注奣出处。
sort是用来shuffle的shuffle就是把key相同的东西弄一起去,其实不一定要sort也能shuffle但是sort的好处是他可以通过外排降低内存使用量
MR在reduce阶段需要分组,将key楿同的放在一起进行规约为了达到该目的,有两种算法:hashmap和sort前者太耗内存,而排序通过外排可对任意数据量分组只要磁盘够大就行。map端排序是为了减轻reduce端排序的压力在spark中,除了sort的方法也提供hashmap,用户可配置毕竟sort开销太大了。
著作权归作者所有商业转载请联系作鍺获得授权,非商业转载请注明出处
MR在reduce阶段需要分组,将key相同的放在一起进行规约为了达到该目的,有两种算法:hashmap和sort前者太耗内存,而排序通过外排可对任意数据量分组只要磁盘够大就行。map端排序是为了减轻reduce端排序的压力在spark中,除了sort的方法也提供hashmap,用户可配置毕竟sort开销太大了。
著作权归作者所有商业转载请联系作者获得授权,非商业转载请注明出处