Mahout FPG算法始终使用单个减速器

时间:2013-09-09 23:17:38

标签: machine-learning mahout

我正在使用Mahout (v 0.7) parallel FPG algorithm CLI模式来生成频繁模式。该算法工作正常,可以正确生成频繁模式。

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

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

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

我使用Mahout的FPG命​​令:

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

2 个答案:

答案 0 :(得分:0)

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

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

对我来说,我无法使用此参数更改映射器的数量,但我始终能够控制缩减器的数量。

答案 1 :(得分:0)

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

您可以使用以下内容缩小分割尺寸:

-Dmapred.max.split.size=1048576

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