Machine learning Mahout FPG算法通常使用单减速器

Machine learning Mahout FPG算法通常使用单减速器,machine-learning,mahout,Machine Learning,Mahout,我正在使用CLI模式生成频繁模式。该算法工作良好,能够正确地生成频繁模式 我遇到的问题是,算法在生成模式的第二阶段总是使用一个减缩器。该算法为每个输入分割创建一个映射器,但在第二阶段,所有映射器都将其输出发送到一个reducer,这大大降低了算法的速度 我甚至试图设置-Dmapred.reduce.tasks参数来覆盖默认的减缩器数量,但它没有起作用 如果可能的话,我想把第二阶段的工作分成多个减速机 我使用的管理员的FPG命令: mahout fpg \ -i /path/to/in

我正在使用CLI模式生成频繁模式。该算法工作良好,能够正确地生成频繁模式

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

我甚至试图设置
-Dmapred.reduce.tasks
参数来覆盖默认的减缩器数量,但它没有起作用

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

我使用的管理员的FPG命令:

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

通过在命令末尾添加以下内容,可以更改映射器和还原器的数量:

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

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

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

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

-Dmapred.max.split.size=1048576

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

我在命令末尾添加了参数
-Dmapred.reduce.tasks=18
,并尝试了不同数量的减速机,但没有成功。我只能猜测它的设计是这样的,所有东西都放在一个减速机中。我对RowSimilarityJob也有同样的问题,其中映射器的数量始终为175,但我认为您可以控制还原器的数量。