2013-10-16 98 views
1

我是Mahout新手。我想安裝它並嘗試一下。到目前爲止,我已經在我的Mac上安裝並配置了Maven3和Java 1.6。我的問題是:如何在mac上安裝apache mahout?

Do I have to install Hadoop firstly before installing Mahout? 

一些教程包括安裝Hadoop和一些不會讓我困惑的東西。我知道Mahout建立在Hadoop之上。但並不是所有的Mahout都依賴於Hadoop。

有人可以提供一些有關安裝的有用的詳細資源?

+0

爲什麼不試試看?你說「不是全部」取決於Hadoop,但其他人怎麼知道你是否需要這些部件呢? – millimoose

+0

我只想弄清楚爲什麼Hadoop安裝Mahout或者不需要安裝Mahout。現在,我正在嘗試首先安裝Hadoop,以防發生不良情況。 –

+0

可能的重複[是否可以使用沒有hadoop依賴的Apache mahout?](http://stackoverflow.com/questions/7815317/is-it-possible-to-use-apache-mahout-without-hadoop-dependency) – millimoose

回答

0

您不需要hadoop at所有嘗試mahout。下面是一個示例代碼,它將模型作爲文件的輸入並將打印推薦。

package com.ml.recommend; 

import java.io.File; 
import java.io.IOException; 
import java.util.List; 

import org.apache.mahout.cf.taste.common.TasteException; 
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; 
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; 
import org.apache.mahout.cf.taste.impl.recommender.CachingRecommender; 
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; 
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity; 
import org.apache.mahout.cf.taste.model.DataModel; 
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; 
import org.apache.mahout.cf.taste.recommender.RecommendedItem; 
import org.apache.mahout.cf.taste.recommender.Recommender; 
import org.apache.mahout.cf.taste.similarity.UserSimilarity; 

public class App { 

     public static void main(String[] args) throws IOException, TasteException { 

       DataModel model = new FileDataModel(new File("data.txt")); 
       UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(model); 

       UserNeighborhood neighborhood = new NearestNUserNeighborhood(3, 
           userSimilarity, model); 

       Recommender recommender = new GenericUserBasedRecommender(model, 
           neighborhood, userSimilarity); 

       Recommender cachingRecommender = new CachingRecommender(recommender); 

       List<RecommendedItem> recommendations = cachingRecommender.recommend(
           1000000000000006075L, 10); 

       System.out.println(recommendations); 

     } 

} 
1

給予另一個回答這個問題,現在,它的兩年後,我終於得到了一個itemsimilarity命令在Mac上運行了很多咒罵後,有些瀉血...希望這可以節省有人一段時間,苦難。除了我的同事!你的弱點讓我厭惡!反正...

首先爲「我需要$ FINICKY_BIG_DATA_PLATFORM」的問題,請參見:

http://mahout.apache.org/users/basics/algorithms.html

Hadoop和/或火花不難要求,一些算法在一臺機器上運行。但是,您可能感興趣的算法只能運行在hadoop和/或spark上。關於建議的文檔也會讓你非常強烈地運行基於火花的算法。他們還鼓勵您使用黑盒命令行命令,這些命令可以在單機和火花版本之間具有不同的參數(例如,項目類似性)。所以你不需要NEED它,但你可能仍然需要它。

我嘗試了hadoop,apache-spark和mahout的brew安裝。如果您使用的絕對是最新的版本(象夫0.11.0,Apache的火花1.4.1,2.7.1 Hadoop的),你可能有一些這樣的問題:

  • 「遇到錯誤找不到星火類路徑。 'SPARK_HOME'是否設置?「要解決這個問題,不僅需要設置該環境變量(我的設置爲」/usr/local/Cellar/apache-spark/1.4.1/libexec「),還需要$ {SPARK_HOME}/bin /中顯然已棄用的compute-classpath.sh腳本。我有一個1.2.0火花裝置方便,所以我從那裏舉起一個。

  • Bonus gotcha,在1.2.0安裝中有兩個compute-classpath.sh腳本,一個只是一個線程調用另一個。如果您複製「真實」的複製品,您可能會更高興,因此請少用一下檢查。

  • 「java.lang.UnsatisfiedLinkError:java.library.path中沒有snappyjava」爲了解決這個問題,互聯網會告訴你得到libsnappyjava.jnilib的副本,把它放在/ usr/lib/java中並重命名它libsnappyjava.dylib。我做了「brew install snappy」,它安裝了1.1.3版本,幷包含名爲libsnappy.dylib和libsnappy.jnilib的符號鏈接。請注意,這些只是符號鏈接,名稱不太正確...所以在複製和重命名主lib文件後,我至少得到一個新的錯誤,這使我們...

  • 「Exception in線程「main」java.lang.UnsatisfiedLinkError:org.xerial.snappy.SnappyNative.maxCompressedLength(I)I「互聯網不太可能提供建議。我看到一篇文章說1.0.xxx版本沒有任何魔法小馬代碼,但版本1.1.1.3沒有。我去了http://central.maven.org/maven2/org/xerial/snappy/snappy-java/,下載了snappy-java-1.1.1.3.jar,並將它原樣放入/ usr/lib/java,沒有更改名稱。這使得錯誤的錯誤消失,我可以運行一個「mahout spark-itemsimilarity」命令來完成,YMMV,這個建議是沒有保證的。

  • 請注意,錯誤導致的絕望可能會促使您下載spark.tgz並從頭開始構建。構建過程將佔用你生活的大約2個小時,你永遠不會回來,最終你仍然會有錯誤的錯誤。最終,我可以用這個手工製作的版本來運行相同的命令,就像brew的安裝版本一樣,這個精美的jar最終成爲主要的東西。