在Hadoop MapReduce中,我有几个基本问题。
在MapReduce中有保证排序的地方吗?
发布于 2015-07-16 08:16:00
1.假设执行了100个映射器和零减速器。它会生成100个文件吗?
是。
所有的人都被分类了?
不是的。如果没有使用减速器,则映射器的输出不会排序。排序只在有减少阶段时进行。
所有映射器输出都排序了吗?
不,出于同样的原因,就像上面一样。
2.减速器的输入是关键的->值。对于每个键,所有的值都被排序了吗?
不是的。然而,键是排序的。在洗牌阶段之后,还原器得到映射器的输出,它合并-排序映射器的排序输出键(因为有一个减少阶段),当它开始减少时,键被排序。
3.假设有50名减速器被处决。它会生成50个文件吗?
是。(除非您使用MultipleOutputs)
所有单独的文件都被排序了?
不是的。排序输入不能保证排序输出。输出取决于您在还原方法中使用的算法。
所有减速机的输出都是排序的?
不,原因和上面一样。但是,如果您使用标识减速器,也就是说,您只是在得到它时写入减速器的输入,则减速器的输出将按减速器排序,而不是全局排序。
在MapReduce中有保证排序的地方吗?
排序是在存在约简阶段时进行的,并应用于每个映射器的输出键和每个减速器的输入键。如果要对减速器的输入进行全局排序,可以使用单个减速器,也可以使用TotalOrderPartitioner,这有点棘手.
https://stackoverflow.com/questions/31447195
复制相似问题