2014-03-28 27 views
0

我想在Mahout中運行樹冠的例子,但我得到的錯誤:在runining樹冠例如錯誤的象夫

Warning: $HADOOP_HOME is deprecated. Running on hadoop, using /usr/local/hadoop/bin/hadoop and HADOOP_CONF_DIR= MAHOUT-JOB: /usr/local/mahout-distribution-0.7/examples/target/mahout-examples-0.7-> job.jar Warning: $HADOOP_HOME is deprecated.

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/io/Closeables at org.apache.mahout.driver.MahoutDriver.loadProperties(MahoutDriver.java:214) at 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) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.hadoop.util.RunJar.main(RunJar.java:160) Caused by: java.lang.ClassNotFoundException: com.google.common.io.Closeables at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) ... 7 more

的情況下,有番石榴r09.jar在「在/ usr /本地/ mahout-distribution-0.7/examples/target/dependency「,其中包括com/google/common/io/Closeables類及其依賴項在pom.xml中。

我能做些什麼來解決這個錯誤?

回答

0

不幸的是,Hadoop和Mahout是一團糟。你可能在罐地獄

我不認爲這是真的值得去嘗試很多。除非你有谷歌縮放數據,否則非Mapreduce實現可能會更快。即:只要您的數據適合單個節點的內存,就更喜歡單節點解決方案。

在我的實驗中,具有10-15個CPU的Mahout羣集比單個CPU實現慢5倍左右。因爲Hadoop和Mahout的所有這些「框架」和麪向磁盤的操作都需要相當大的成本。所以,如果你的數據不是TB級的大小,不要使用它。

我們可以更精確的答案:

你是在一個分佈式世界。如果這個.jar文件在您的計算機上可用,這是不夠的。 由於Hadoop的設計,它實際上必須是上傳給參與計算的每個主機。 mahout命令應該處理此事(識別並上傳所有必需的.jar文件),但有時它無法獲得正確的類路徑。不幸的是,這個過程很混亂,很難理解或調試。

Warning: $HADOOP_HOME is deprecated.

認真對待此警告。什麼是目前的獲得類路徑的權利?