MapReduce——Shuffle过程
Shuffle的本意是洗牌、混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好。MapReduce中的Shuffle更像是洗牌的逆过程,把一组无规则的数据尽量转化成一组具有一定规则的数据。 为什么MapReduce计算模型需要Shuffle过程? 我们都知道MapReduce计算模型一般包括两个重要的阶段: Map是映射,负责数据的过滤分发;Reduce是规约,负责数据的计算归并。 Reduce数据来源于Map,Map的输出即是Reduce的输入,Reduce需要通过Shuffle来获取数据。 从Map输出到Reduce输入的整个过程可以广义地称为Shuffle (Reduce开始之前吧对应的数据从每个map输出的中间结果拷贝过来,这个过程称为copy,拷贝中间结果过来后,会经过合并、排序等操作,会产生一个排序的输入文件,这个过程为sort,copy和sort两个过程合起来也称为Shuffle过程。)Shuffle横跨Map端和Reduce端,在Map端包括Spill过程,在reduce端包括copy和sort过程。 MapReduce详细流程 1、切片 在FileInputFormat中,计算切片大小的逻辑:Math.max(minSize, Math.min(maxSize, blockSize)) minSize的默认值是1