如何增加mahout matrixmultiplicationjob中的Map器数量?

zkure5ic  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(367)

我用的是mahout 0.7 MatrixMultiplicationJob 把一个大矩阵相乘。但是它总是使用一个map任务,这使得它的速度很慢。可能是因为 InputSplit 强制Map器的数目为1。
有没有一种方法可以在hadoop/mahout中高效地乘法矩阵或更改Map器的数量?

dffbzjpn

dffbzjpn1#

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

tvmytwxo

tvmytwxo2#

最终,hadoop决定了要使用多少Map器。通常每个hdfs块使用一个Map器(通常为64或128mb)。如果您的数据小于此值,则它太小,无法使用多个Map器。
你可以通过设置 mapred.max.split.size 小于64mb(请记住,该值是以字节而不是mb为单位设置的)。但是,你确定你想吗?更常见的情况是需要更多的缩减器,而不是Map器,因为hadoop永远不会使用超过1个,除非您(或您的工作)告诉它。
还要知道hadoop不能在一个压缩文件上使用多个Map器。因此,如果您的输入是一个巨大的压缩文件,它将永远只使用一个Map器对该文件。不过,您可以将其拆分为许多较小的压缩文件。

相关问题