1.假设有100个映射器被执行并且零减速器.它会生成100个文件吗?
是.
所有人都排序?
不.如果没有使用减速器,那么映射器的输出不会被排序.仅在存在减少阶段时进行排序.
对所有映射器输出进行排序?
不,出于同样的原因,如上所述.
2. reducer的输入是Key - > Values.对于每个键,所有值都已排序?
不会.但是,按键已排序.在混洗阶段(缩减器获得映射器的输出)之后,它合并排序映射器的排序输出键(因为存在减少阶段),并且当它开始缩小时,键被排序.
3.假设有50个减速器被执行.它会生成50个文件吗?
是.(除非你使用MultipleOutputs)
所有单个文件都已排序?
不.排序的输入不保证排序的输出.输出取决于您在reduce方法中使用的算法.
所有减速机输出都排序?
不,出于与上述相同的原因.但是,如果您使用Identity Reducer,即只是在获得减速器时输入减速器,则减速器的输出将按PER REDUCER排序,而不是全局排序.
在MapReduce中是否有保证排序的地方?
当存在减少阶段时进行排序,并将其应用于每个映射器的输出键和每个减速器的输入键.如果要对reducer的输入进行全局排序,可以使用单个reducer,也可以使用TotalOrderPartitioner,这有点棘手......