在mahout中运行冠层示例中的错误

时间:2014-03-28 16:10:21

标签: maven cluster-analysis mahout

我想在mahout中运行canopy示例,但我收到错误:

  

警告:不推荐使用$ HADOOP_HOME。   在hadoop上运行,使用/ usr / local / hadoop / bin / hadoop和HADOOP_CONF_DIR =   MAHOUT-JOB:/usr/local/mahout-distribution-0.7/examples/target/mahout-examples-0.7-> job.jar   警告:不推荐使用$ HADOOP_HOME。

     

线程“main”中的异常java.lang.NoClassDefFoundError:com / google / common / io / Closeables   在org.apache.mahout.driver.MahoutDriver.loadProperties(MahoutDriver.java:214)   在org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:98)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)   在java.lang.reflect.Method.invoke(Method.java:597)   在org.apache.hadoop.util.RunJar.main(RunJar.java:160)   引起:java.lang.ClassNotFoundException:com.google.common.io.Closeables   在java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)   at java.security.AccessController.doPrivileged(Native Method)   在java.net.URLClassLoader.findClass(URLClassLoader.java:190)   at java.lang.ClassLoader.loadClass(ClassLoader.java:306)   在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)   at java.lang.ClassLoader.loadClass(ClassLoader.java:247)   ......还有7个

万一,“/usr/local/mahout-distribution-0.7/examples/target/dependency”中有guava-r09.jar,其中包括com / google / common / io / Closeables类及其依赖关系在pom中.XML。

我该怎么做才能解决这个错误?

1 个答案:

答案 0 :(得分:0)

不幸的是,Hadoop和Mahout很乱。你可能在 jar地狱

我认为实际上不值得尝试。除非您拥有Google比例数据,否则非Mapreduce实施可能快得多。也就是说:只要您的数据适合单个节点的内存,就更喜欢单节点解决方案。

在我的实验中,具有10-15个CPU的Mahout群集比单个CPU实现的速度慢约5倍。因为所有这些"框架"而Hadoop和Mahout的磁盘导向操作需要付出巨大代价。因此,如果您的数据不是太字节的大小,请不要使用它。

现在回答一个更精确的答案:

您位于分布式世界中。如果你的计算机上有这个.jar文件是不够的,那还不够。 由于Hadoop的设计,它实际上必须上传到参与计算的每个主机。 mahout命令应该处理这个问题(识别并上传所有必需的.jar文件),但有时它无法使类路径正确。不幸的是,这个过程很乱,很难理解或调试。

  

警告:不推荐使用$ HADOOP_HOME。

认真对待此警告。什么是获取类路径的当前方法?