如何增加Mahout MatrixMultiplicationJob中的映射器数量?

时间:2012-10-04 09:41:32

标签: hadoop matrix mapreduce mahout multiplication

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

有没有办法可以有效地在Hadoop / Mahout中增加矩阵或更改映射器的数量?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

您是否尝试通过命令行使用-Dmapred.map.tasks=N选项指定映射器的数量?我没有尝试过,但它应该工作。如果它不起作用,请尝试在MAHOUT_OPTS环境变量...

中设置此参数