我想在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。
我该怎么做才能解决这个错误?
答案 0 :(得分:0)
不幸的是,Hadoop和Mahout很乱。你可能在 jar地狱。
我认为实际上不值得尝试。除非您拥有Google比例数据,否则非Mapreduce实施可能快得多。也就是说:只要您的数据适合单个节点的内存,就更喜欢单节点解决方案。
在我的实验中,具有10-15个CPU的Mahout群集比单个CPU实现的速度慢约5倍。因为所有这些"框架"而Hadoop和Mahout的磁盘导向操作需要付出巨大代价。因此,如果您的数据不是太字节的大小,请不要使用它。
现在回答一个更精确的答案:
您位于分布式世界中。如果你的计算机上有这个.jar文件是不够的,那还不够。
由于Hadoop的设计,它实际上必须上传到参与计算的每个主机。 mahout
命令应该处理这个问题(识别并上传所有必需的.jar文件),但有时它无法使类路径正确。不幸的是,这个过程很乱,很难理解或调试。
警告:不推荐使用$ HADOOP_HOME。
认真对待此警告。什么是获取类路径的当前方法?