2

我正在使用 Mahout 0.7MatrixMultiplicationJob来乘以一个大矩阵。但它总是使用 1 个地图任务,这使得它变慢了。这可能是由于InputSplit这迫使映射器的数量为 1。

有没有一种方法可以有效地将 Hadoop / Mahout 中的矩阵相乘或更改映射器的数量?

4

2 回答 2

3

最终,决定使用多少映射器的是 Hadoop。通常,每个 HDFS 块(通常为 64 或 128MB)使用一个映射器。如果您的数据小于该数据,那么它太小而无法使用超过 1 个映射器。

mapred.max.split.size您可以通过设置小于 64MB来鼓励它使用更多(记住该值以字节为单位,而不是 MB)。但是,你确定要吗?更常见的是需要更多的 reducer,而不是 mapper,因为 Hadoop 永远不会使用超过 1 个,除非你(或你的工作)告诉它。

还要知道 Hadoop 将无法在单个压缩文件上使用多个映射器。因此,如果您的输入是一个巨大的压缩文件,它只会在该文件上使用 1 个映射器。但是,您可以自己将其拆分为许多较小的压缩文件。

于 2012-10-04T14:39:19.017 回答
0

您是否尝试通过带有-Dmapred.map.tasks=N选项的命令行指定映射器的数量?我没有尝试过,但它应该可以工作。如果不行,那就尝试在MAHOUT_OPTS环境变量中设置这个参数...

于 2012-10-04T11:15:32.053 回答