gpt4 book ai didi

即使我将 numReducetasks 设置为 2,Hadoop 也只会生成一个输出文件

转载 作者:可可西里 更新时间:2023-11-01 15:03:05 25 4
gpt4 key购买 nike

我在 ubuntu 上以伪分布式模式设置了 hadoop。我的理解是我可以在伪模式下使用多个 reducer 运行一项工作。但即使将 numReducetasks 设置为 2,我也只得到一个输出文件 partr0000。这是为什么?

注意:我的输入文件只有 12 条记录。这是一个二级排序的 MR 程序。

感谢您的帮助。

最佳答案

如果您看到默认分区程序 HashPartitionergetPartition(),它看起来如下所示:

public int getPartition(K key, V value, int numReduceTasks) { 
return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;
}

我认为所有记录都属于同一个分区只是偶然发生的。只需运行一个测试,看看您使用 12 条记录为上述函数获得了哪些值。

reducer 的数量和输出文件的数量不必总是相同,因为某些 reducer 可能没有输出记录(即使它收到了一些输入)。

运行此作业时,还要从浏览器中检查 hadoop UI,您应该会看到 reducer 的总数与您设置的数量一致。检查您的 conf/mapred-site.xml,您可以找到要查看 Hadoop UI 的 URL:

<property>
<name>mapred.job.tracker</name>
<value>localhost:54311</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>

因此,如果您点击 localhost:54311 ,您应该会看到正在运行的作业列表。

关于即使我将 numReducetasks 设置为 2,Hadoop 也只会生成一个输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17162637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com