mapreduce hadoop中的排序

ia2d9nvy  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(474)

在hadoopmapreduce中我有几个基本问题。
假设执行了100个Map器,减少了0个。它会生成100个文件吗?所有个人都被分类了?所有Map器的输出是否排序?
减速机的输入是key->values。对于每个键,所有值都进行排序?
假设执行了50个减速器。它会生成50个文件吗?所有单个文件都已排序?所有减速机的输出是否排序?
在mapreduce中是否有保证排序的地方?

b5buobof

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,这有点棘手。。。

相关问题