MapReduce Hadoop中的排序

MapReduce Hadoop中的排序,hadoop,mapreduce,cloudera,mapr,Hadoop,Mapreduce,Cloudera,Mapr,在Hadoop MapReduce中,我有几个基本问题 假设执行了100个映射器,并且减缩器为零。会吗 生成100个文件?所有个人都被分类了吗?跨所有映射器 输出是否已排序 减速器的输入为键->值。对于每个键,所有值都进行排序 假设执行了50个减速器。它会生成50个文件吗?是否对所有单个文件进行排序?所有减速器的输出是否已排序 在MapReduce中是否有保证排序的地方 1.假设执行了100个映射器,并且减缩器为零。它会生成100个文件吗 对 所有个人都被分类了吗 否。如果未使用减缩器,则映射器

在Hadoop MapReduce中,我有几个基本问题

  • 假设执行了100个映射器,并且减缩器为零。会吗 生成100个文件?所有个人都被分类了吗?跨所有映射器 输出是否已排序
  • 减速器的输入为键->值。对于每个键,所有值都进行排序
  • 假设执行了50个减速器。它会生成50个文件吗?是否对所有单个文件进行排序?所有减速器的输出是否已排序
  • 在MapReduce中是否有保证排序的地方

    1.假设执行了100个映射器,并且减缩器为零。它会生成100个文件吗

    所有个人都被分类了吗

    否。如果未使用减缩器,则映射器的输出不会排序。只有在存在缩减阶段时,才会进行排序

    是否对所有映射器输出进行排序

    不,原因与上述相同

    2.减速器的输入为键->值。对于每个键,所有值都进行排序

    否。但是,键已排序。在混洗阶段(reducer获得映射器的输出)之后,它合并对映射器的已排序输出键进行排序(因为有一个reduce阶段),当它开始减少时,键被排序

    3.假设执行了50个减速器。它会生成50个文件吗

    对。(除非您使用)

    是否对所有单个文件进行排序

    否。排序后的输入不能保证排序后的输出。输出取决于reduce方法中使用的算法

    所有减速器的输出是否已排序

    不,原因与上述相同。但是,如果您使用一个标识减缩器,也就是说,您只需在得到减缩器时写入减缩器的输入,减缩器的输出将按减缩器排序,而不是全局排序

    在MapReduce中是否有保证排序的地方


    排序发生在存在reduce阶段时,并应用于每个映射器的输出键和每个reducer的输入键中。如果要对减速机的输入进行全局排序,可以使用单个减速机,也可以使用一个有点棘手的减速机…

    看起来这个减速机没有出现。“减速器的输入是键->值。对于每个键,所有值都已排序?”。对于一个键,所有的值都没有排序。我的错!排序取决于键,而不是值。我现在就修。对不起@vefthym根据您的回答,如果我们只使用一个减速机,我们将获得全局排序的数据?这意味着我们在输出中得到一种键?@SaeedRahmani正确,如果您只打印单个减速机的输入对(即,如果您使用单个IdentityReducer),那么这些键将被全局排序。@vefthym,这是我的问题,我使用单个减速机,但输出不是全局排序的。为什么?