Hadoop上的Mahout k-means

Hadoop上的Mahout k-means,hadoop,cluster-computing,cluster-analysis,mahout,Hadoop,Cluster Computing,Cluster Analysis,Mahout,我想在Hadoop伪分布式模式下运行kmeans集群。我在一个.mat文件中有500万个向量,每个向量有38个数字特征,如下所示: 0 0 1 0 0 0 0 0 0 0 0 0 0 0 我运行了我找到的例子,比如路透社(mhttps://mahout.apache.org/users/clustering/k-means-clustering.html)或合成数据。我知道我必须把这个向量转换成SequenceFile,但我不知道我之前是否需要做更多的工作 我正在使用Mahout 0.7和Had

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

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

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

然后,下一步是使用SeqDirectory(或编写自己的SequenceFileWriter来完成),所有其他步骤如Reuters示例所示

您自己的序列文件编写器的示例如下

我在Mahout LDA中也尝试了同样的方法,在那里我编写了自己的序列文件编写器,并将其作为LDA过程的下一步seq2sparse的输入

切勿使用伪分布式模式 Mahout只有在数据太大而无法在一台计算机上进行分析的情况下才有回报,但实际上至少需要十几台计算机来保存和处理数据

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

在伪分布式模式下,它无论如何都无法很好地从此类崩溃中恢复

如果您想学习安装和配置Mahout,而不需要访问真正的集群,那么伪分布式模式是可以的。用于分析真实数据是不合理的

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

以自己为基准 如果你在这方面不信任我,那你自己做基准吧。将reuters数据加载到Matlab中,并在那里进行聚类。我敢肯定,Matlab会让Mahout看起来像一个过时的时尚