0

如果我增加映射器的数量并减少减速器的数量,那么执行时任何作业的性能(增加/减少)是否有任何差异?

另外我想问一下如何设置映射器和减速器的数量?我从来没有玩过这个设置,这就是为什么我不知道这个。我知道 hadoop,但我有代码,因为我经常使用 Hive。

此外,如果我想增加映射器和化简器的数量,那么如何设置它以及设置它的值是多少。它是否取决于实例的数量(比如说 10 个)?

请回复我我想试试这个并检查性能。谢谢。

4

4 回答 4

4

您可以根据块大小和拆分大小增加映射器的数量。最简单的方法之一是减小拆分大小,如下所示:

Configuration conf= new Cofiguration();
//set the value that increases your number of splits.
conf.set("mapred.max.split.size", "1020");
Job job = new Job(conf, "My job name");
于 2012-07-16T22:29:21.643 回答
3

更改映射器的数量 - 是纯粹的优化,不应该影响结果。您应该设置 number 以充分利用您的集群(如果它是专用的)。尝试每个节点的映射器数量等于核心数量。查看 CPU 利用率,并增加数量,直到 CPU 利用率几乎达到满,或者系统开始交换。如果您没有足够的内存,您可能需要更少的映射器然后内核。
减速器的数量会影响结果,因此,如果您需要特定数量的减速器(如 1)- 设置它
如果您可以处理任意数量的减速器的结果 - 进行与 Mappers 相同的优化。
从理论上讲,您可以在此调整过程中成为 IO 绑定 - 在调整任务数量时也要注意这一点。尽管映射器/减速器数量增加,但您可以通过低 CPU 利用率来识别它。

于 2012-05-06T07:53:55.083 回答
0

我通过修改尝试了@Animesh Raj Jha 的建议,mapred.max.split.size并获得了显着的性能提升。

于 2013-06-07T22:27:11.047 回答
0

我正在使用 hadoop 2.2,并且不知道如何设置最大输入拆分大小我想减小这个值,以便创建更多映射器我尝试更新 yarn-site.xml,但它不起作用

确实,hadoop 2.2 /yarn 不采用以下设置

<property>
<name>mapreduce.input.fileinputformat.split.minsize</name>
<value>1</value>
</property>
<property>
<name>mapreduce.input.fileinputformat.split.maxsiz e</name>
<value>16777216</value>
</property>

<property>
<name>mapred.min.split.size</name>
<value>1</value>
</property>
<property>
<name>mapred.max.split.size</name>
<value>16777216</value>
</property>

最好的

于 2014-04-29T10:24:37.807 回答