Mahout k-means在Hadoop上

时间:2014-05-24 16:06:17

标签: hadoop cluster-computing cluster-analysis mahout

我想在Hadoop伪分布式模式下运行kmeans集群。我在.mat文件中有500万个向量,每个向量有38个数字特征,如下所示: 0 0 1 0 0 0 0 0 0 0 0 0 ...

我已经运行了我找到的示例,例如路透社(mhttps://mahout.apache.org/users/clustering/k-means-clustering.html)或合成数据。我知道我必须将这些载体转换为SequenceFile,但我不知道以前是否需要做更多的事情。

我使用的是Mahout 0.7和Hadoop 1.2.1。

2 个答案:

答案 0 :(得分:0)

是的,您需要一个小的预处理步骤。

由于生成的MAT文件是二进制文件,将其转换为文本文件(.txt),每行开始一个包含38个特征值的向量,这将是第一步。

然后,使用SeqDirectory(或编写自己的SequenceFileWriter来完成它)将是下一步,所有其他步骤都遵循路透社的例子。

您自己的序列文件编写器的示例为How to convert .txt file to Hadoop's sequence file format

我为Mahout LDA尝试了相同的操作,我编写了自己的序列文件编写器,并将其作为LDA过程下一步的输入,即seq2sparse。

答案 1 :(得分:0)

永远不要使用伪分布式模式

如果您的数据 太大而无法在单台计算机上进行分析,那么Mahout只会得到回报,但您确实需要至少十几台计算机来保存并处理数据。

原因是架构。 Mahout构建在map-reduce之上,依赖于将大量iterim数据写入磁盘,以便能够从崩溃中恢复。

在伪分布式模式下,无论如何都无法从这种崩溃中恢复过来。

如果您想学习安装和配置Mahout,而无法访问真正的群集,则可以使用伪分布式模式。用于分析实际数据是合理的。

相反,使用Matlab内置的功能,或使用为单个节点设计的群集工具,例如ELKI。它通常会超过Mahout一个数量级的将所有内容写入磁盘多次。在我的实验中,这些工具能够在单个核心上超过10核Mahout群集10倍。因为I / O成本完全支配运行时。

自我评估

如果你不相信我,请自己做基准。将路透社数据加载到Matlab中,并将其集中在那里。我很确定,Matlab会让Mahout看起来像一个古老的时尚。