我一直在检查使用MapReduce的Mahout0.9k方法的算法,我想知道在哪里可以检查在映射函数和还原器中发生的代码?
我使用NetBeans进行调试,无法找到地图中确切实现的内容并减少函数.
我之所以这样做,是因为我想知道在Mahout0.9版本中到底实现了什么,以便查看在K-上优化的哪个部分意味着mapReduce算法。
如果有人知道马赫特K手段是以哪篇研究论文为基础的,那也会对我有很大帮助。
非常感谢!
诚挚的问候!
发布于 2014-03-16 03:03:41
下载mahout核心的源代码。搜索java文件org.apache.mahout.clustering.kmeans.KMeansDriver。
在这个java文件中搜索行ClusterIterator.iterateMR(conf, input, priorClustersPath, output, maxIterations);
iterateMR函数在class org.apache.mahout.clustering.iterator.ClusterIterator中是定义映射约简所需的所有配置的类。
org.apache.mahout.clustering.iterator.CIMapper和org.apache.mahout.clustering.iterator.CIReducer是您要寻找的Map类。
希望这会有帮助!)
然而,我不知道哪一篇研究论文得到了实施。
发布于 2014-03-16 08:58:36
K-均值(更准确地说,是劳埃德算法)是天真的平行。我怀疑是否有一篇论文讨论Mahout所使用的实现,因为这是显而易见的方法。绝对不涉及任何技巧:劳埃德算法主要由一个和组成,和几乎是并行化的。
不幸的是(和Hadoop一样),Mahout有10层厚的抽象。这并不能提供最好的性能,但特别是使得很难将所有的代码和元代码挖掘到实际的实现中。请参阅其他的answere,以获得散落在十几个类中的源代码片段的指针。
在使用Mahout时,请确保在您的实验中还包括k-means的非Hadoop实现。你会感到惊讶的是,它们比Mahout表现更好,而B)提供了更好的结果。
https://stackoverflow.com/questions/22421371
复制相似问题