今天,花费了一下午的时间才将Mahout安装完成,头昏脑涨。下面介绍一下详细的安装过程。
我是新建了一台虚拟机(Ubuntu)进行安装,需要的软件如下:
hadoop-1.2.1 下载地址:
mahout-0.9 下载地址:
jdk
测试数据:synthetic_control.data
将所有文件进行解压,然后安装。
我使用的是hadoop1.x的伪分布式。(hadoop的配置我就不详细介绍,如果有朋友需要可以call我)
对 .bashrc 文件进行如下配置
export JAVA_HOME=/usr/lib/java/jdk1.8.0_91
export HADOOP_HOME=/usr/local/hadoop/hadoop-1.1.2
export MAHOUT_HOME=/usr/local/mahout/mahout-distribution-0.9
export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
export HADOOP_HOME_WARN_SUPPRESS=0 //这一个不添加也可以,如果不添加当输入命令比如hadoop version的时候 有Warning提示(似乎是HADOOP_HOME is de...)
export CLASSPATH=.:$JAVAHOME/lib:$MAHOUT_HOME/lib
export PATH=$PATH:$MAHOUT_HOME/bin:$HADOOP_HOME/bin:$JAVA_HOME/bin
我们输入命令mahout --help出现很多算法提示,说明mahout初步成功。
rowsimilarity: : Compute the pairwise similarities of the rows of a matrix
seq2encoded: : Encoded Sparse Vector generation from Text sequence files
seq2sparse: : Sparse Vector generation from Text sequence files
seqdirectory: : Generate sequence files (of Text) from a directory
seqdumper: : Generic Sequence File dumper
seqmailarchives: : Creates SequenceFile from a directory containing gzipped mail archives
seqwiki: : Wikipedia xml dump to sequence file
spectralkmeans: : Spectral k-means clustering
split: : Split Input data into test and train sets
splitDataset: : split a rating dataset into training and probe parts
ssvd: : Stochastic SVD
streamingkmeans: : Streaming k-means clustering
svd: : Lanczos Singular Value Decomposition
testnb: : Test the Vector-based Bayes classifier
trainnb: : Train the Vector-based Bayes classifier
transpose: : Take the transpose of a matrix
vecdist: : Compute the distances between a set of Vectors (or Cluster or Canopy, they must fit in memory) and a list of Vectors
vectordump: : Dump vectors from a sequence file to text
viterbi: : Viterbi decoding of hidden states from given output states sequence
上面就是一些算法。下面我们使用官方给出的一个案例进行测试。(
测试数据:synthetic_control.data)
将数据上传到对应目录中 hadoop dfs -put /root/Downloads/synthetic_control.data testdata(必须放在这个目录中,因为我经过测试知道官方给出的测试jar中的输入路径就是/user/root/testdata,我们创建的目录testdata自动就位于这个/user/root 之下)
然后输入命令:hadoop jar /usr/local/mahout/mahout-distribution-0.9/mahout-examples-0.9.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
运行的时候如果出现错误,名称是缺少 AbstractJob类,这时候我们需要将mahout安装目录(不是mahout lib目录)下的除了example.jar 所有jar包复制到hadoop的lib目录下,重新启动hadoop,然后运行上面的命令。
如果出现这种错误 说缺少方法错误,什么slfj4类,这个错误,说明你的hadoop lib目录下面的slfj4 jar包版本太低,你需要将mahout lib目录下的slfj(有两个)jar包复制到hadoop lib目录下同时删除原先hadoop中的两个slfj4 jar包。然后重新启动hadoop 然后运行上面的命令。
运行成功之后,使用命令 hadoop dfs -ls output
运行结果如下:
root@mahout:~# hadoop dfs -ls output
Found 13 items
-rw-r--r-- 1 root supergroup 194 2016-05-16 19:48 /user/root/output/_policy
drwxr-xr-x - root supergroup 0 2016-05-16 19:48 /user/root/output/clusteredPoints
drwxr-xr-x - root supergroup 0 2016-05-16 19:45 /user/root/output/clusters-0
drwxr-xr-x - root supergroup 0 2016-05-16 19:46 /user/root/output/clusters-1
drwxr-xr-x - root supergroup 0 2016-05-16 19:46 /user/root/output/clusters-2
drwxr-xr-x - root supergroup 0 2016-05-16 19:46 /user/root/output/clusters-3
drwxr-xr-x - root supergroup 0 2016-05-16 19:47 /user/root/output/clusters-4
drwxr-xr-x - root supergroup 0 2016-05-16 19:47 /user/root/output/clusters-5
drwxr-xr-x - root supergroup 0 2016-05-16 19:47 /user/root/output/clusters-6
drwxr-xr-x - root supergroup 0 2016-05-16 19:47 /user/root/output/clusters-7
drwxr-xr-x - root supergroup 0 2016-05-16 19:48 /user/root/output/clusters-8-final
drwxr-xr-x - root supergroup 0 2016-05-16 19:45 /user/root/output/data
drwxr-xr-x - root supergroup 0 2016-05-16 19:45 /user/root/output/random-seeds
希望对大家有帮助!!!