2

我正在使用Mahout (v 0.7) 并行 FPG 算法、CLI 模式来生成频繁模式。该算法工作正常并正确生成频繁模式。

我遇到的问题是该算法总是在生成模式的第二阶段使用一个减速器。该算法为每个输入拆分创建一个映射器,但在第二阶段,所有映射器将其输出发送到一个减速器,这大大减慢了算法的速度。

我什至尝试将-Dmapred.reduce.tasks参数设置为覆盖默认的reducer数量,但它不起作用。

如果可能的话,我想将第二阶段的工作分成多个减速器。

我使用的 Mahout 的 FPG 命令:

 mahout fpg \
     -i /path/to/input \
     -o /path/to/output \
     -s 5 \
     -k 100 \
     -method mapreduce
4

2 回答 2

0

您的数据当前可能适合单个映射器拆分。

您可以使用以下方法使拆分大小更小:

-Dmapred.max.split.size=1048576

(这会将拆分大小减少到 1024*1024==1MB,但我之前使用 Mahout 时甚至更小,例如-Dmapred.max.split.size=131072在 CPU 密集型作业上拆分为 128KB。)

于 2013-09-19T21:13:44.090 回答
0

您可以通过在命令末尾添加以下内容来更改映射器和缩减器的数量:

 -Dmapred.map.tasks=1000 -Dmapred.reduce.tasks=1000

对我来说,我不能用这个参数改变映射器的数量,但我总是能够控制减速器的数量。

于 2013-09-10T16:48:51.817 回答