是否有人知道我如何转换Mahout in Action书上有关推荐引擎的代码,以便它与Ηadoop完全分布式环境一致?我的主要困难是转换我的代码(当前从本地磁盘读取和写入),以便它在伪分布式环境(如Cloudera)中运行。问题的解决方案是否像this one一样简单,或者我应该期待比这更复杂的事情?
答案 0 :(得分:3)
真正的分布式计算与非分布式计算完全不同,即使计算相同的结果也是如此。结构不一样,它使用的基础设施也不尽相同。
如果您只是询问伪分布式解决方案如何处理本地文件:您将忽略Hadoop输入/输出机制并编写一个Mapper
,从HDFS上的某处读取您的输入并复制到本地磁盘。
如果您问的是如何实际分配计算,那么您必须切换到在项目中使用(完全不同的)分布式实现。这些实际上使用Hadoop来分割计算。上面的过程是一个只在Hadoop容器中运行许多非分布式任务的hack。然而,这些实现完全脱机。
如果你想要一个像Mahout .cf.taste
软件包那样的实时推荐器,但也想要实际使用Hadoop的分布式计算能力,那么你需要的不仅仅是Mahout。它是Mahout中的一个或另一个;有代码可以做一个或另一个,但它们没有关联。
顺便说一句,这正是Myrrix。我不介意在这里做广告,因为它听起来就像你正在寻找的那样。这是我在Mahout代码中开始的工作的演变。除此之外,它是一个2层架构,具有Taste的实时元素,但也可以透明地将计算卸载到Hadoop集群。