在hadoopmapreduce中我有几个基本问题。假设执行了100个Map器,减少了0个。它会生成100个文件吗?所有个人都被分类了?所有Map器的输出是否排序?减速机的输入是key->values。对于每个键,所有值都进行排序?假设执行了50个减速器。它会生成50个文件吗?所有单个文件都已排序?所有减速机的输出是否排序?在mapreduce中是否有保证排序的地方?
b5buobof1#
1.假设执行了100个Map器,并且减少了0。它会生成100个文件吗?对。所有个人都被分类了?否。如果未使用还原器,则Map器的输出不进行排序。只有在存在缩减阶段时才进行排序。所有Map器的输出是否排序?不,出于同样的原因,如上所述。2.减速机的输入是键->值。对于每个键,所有值都进行排序?不。不过,钥匙是分类的。在shuffling阶段(reducer获得Map器的输出)之后,它合并对Map器的已排序输出键进行排序(因为有一个reduce阶段),当它开始减少时,这些键被排序。3.假设执行了50个减速器。它会生成50个文件吗?是的(除非使用倍数输出)所有单个文件都已排序?不可以。排序后的输入不能保证排序后的输出。输出取决于reduce方法中使用的算法。所有减速机的输出是否排序?不,原因和上面一样。但是,如果您使用一个identity reducer,也就是说,您只需在得到reducer时编写它的输入,那么reducer的输出将按reducer排序,而不是全局排序。在mapreduce中是否有保证排序的地方?排序发生在存在reduce阶段时,它应用于每个Map器的输出键和每个reducer的输入键中。如果您想对reducer的输入进行全局排序,可以使用单个reducer,也可以使用totalorderpartitioner,这有点棘手。。。
1条答案
按热度按时间b5buobof1#
1.假设执行了100个Map器,并且减少了0。它会生成100个文件吗?
对。
所有个人都被分类了?
否。如果未使用还原器,则Map器的输出不进行排序。只有在存在缩减阶段时才进行排序。
所有Map器的输出是否排序?
不,出于同样的原因,如上所述。
2.减速机的输入是键->值。对于每个键,所有值都进行排序?
不。不过,钥匙是分类的。在shuffling阶段(reducer获得Map器的输出)之后,它合并对Map器的已排序输出键进行排序(因为有一个reduce阶段),当它开始减少时,这些键被排序。
3.假设执行了50个减速器。它会生成50个文件吗?
是的(除非使用倍数输出)
所有单个文件都已排序?
不可以。排序后的输入不能保证排序后的输出。输出取决于reduce方法中使用的算法。
所有减速机的输出是否排序?
不,原因和上面一样。但是,如果您使用一个identity reducer,也就是说,您只需在得到reducer时编写它的输入,那么reducer的输出将按reducer排序,而不是全局排序。
在mapreduce中是否有保证排序的地方?
排序发生在存在reduce阶段时,它应用于每个Map器的输出键和每个reducer的输入键中。如果您想对reducer的输入进行全局排序,可以使用单个reducer,也可以使用totalorderpartitioner,这有点棘手。。。