Java hadoop reducer无法在clustor中分布

Java hadoop reducer无法在clustor中分布,java,cloudera,hadoop2,reducers,Java,Cloudera,Hadoop2,Reducers,我已经用java编写了一个mapreduce作业。输入文件的大小为2GB。当我在一个8节点集群上运行我的代码时,我得到了16个slipt,我可以从日志中看到这些slipt正在不同的节点上运行。但是,reducer任务仅在“一个节点”上运行。我得到的输出没有任何错误。我检查了我的配置,一切似乎都很好 我试过了 job.setNumReduceTasks(100) -D mapreduce.job.reduces=100 我也得到了100个输出文件。映射器任务分布在节点上,但不是REDUCE任务

我已经用java编写了一个mapreduce作业。输入文件的大小为2GB。当我在一个8节点集群上运行我的代码时,我得到了16个slipt,我可以从日志中看到这些slipt正在不同的节点上运行。但是,reducer任务仅在“一个节点”上运行。我得到的输出没有任何错误。我检查了我的配置,一切似乎都很好

我试过了

  • job.setNumReduceTasks(100)
  • -D mapreduce.job.reduces=100
我也得到了100个输出文件。映射器任务分布在节点上,但不是REDUCE任务


我正在使用cloudera服务。

请发布您的Mapper和Reducer类。如果您得到100个输出文件,那么减缩器就可以了。可能是您的分区错误,所有的键都被发送到一个减缩器。或者您只有一个键,所以所有映射器输出都被发送到一个减缩器。@PrabhuMoorthy我没有使用任何自定义分区器。我只使用映射器和减速器。这是我的映射程序代码片段:JsonObject jobj=(JsonObject)parsor.parse(value.toString());JsonElement Jkey=jobj.get(“加入密钥”);JsonElement Jdate=jobj.get(“日期”);如果(Jkey!=null&&Jdate!=null&&Jcontent!=null&&Jurl!=null&&jautor!=null){context.write(new Text(Jkey.getAsString()),value);}@prabhumoorth,那么映射器输出的键就是“连接键”。这对于一些json文档来说是相同的。我正在用reducer中相同的“连接键”合并json文档。@PrabhuMoorthy我认为如果所有键都指向一个分区器,那么输出也将指向一个part-r文件,其余99个文件将为空。但每个输出文件都有数据。意味着被解散的教区正在做公平的工作。:)