mahout 安装测试

1 下载

Logos for Mahout and Apache Software Foundation

http://archive.apache.org/dist/mahout 下载相应版本的mahout 版本,获取官网查看http://mahout.apache.org 相关的信息

 

 

下载后解压,

tar -zxvf mahout-distribution-0.9.tar.gz

配置环境变量

export MAHOUT_HOME=/home/sms/mahout-distribution-0.9
export MAHOUT_CONF_DIR=$MAHOUT_HOME/conf
export PATH=$MAHOUT_HOME/bin:$PATH

 

2 启动hadoop运行测试

 

下载测试数据  http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data
创建测试目录 testdata,并把数据导入到这个tastdata目录中(这里的目录的名字只能是testdata)

hadoop fs -mkdir testdata

hadoop fs -put synthetic_control.data testdata

命令测试  hadoop jar /home/sms/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

命令查看   hadoop fs -ls output
运行结果在 hdfs 上 的 output 的文件夹中,结果是二进制文件,需要转化。
例如转化 output/data/part-m-00000
命令查看 hadoop jar /home/sms/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.utils.vectors.VectorDumper -i output/data/part-m-00000

本地模式 java -cp /home/sms/mahout-distribution-0.9/mahout-examples-0.9-job.jar org.apache.mahout.utils.vectors.VectorDumper -i /home/sms/output/data/part-m-00000

 

 

 其它意见

 1 一.文本文件向量化
 2 Mahout已经提供了工具类,它基于 Lucene 给出了对文本信息进行分析,然后创建文本向量。mahout提供下面两个命令来将文本转成向量形式(转化成向量后可以聚类):
 3 
 4     mahout seqdirectory:将文本文件转成SequenceFile(序列)文件,SequenceFile文件是一种二制制存储的key-value键值对,对应的源文件是org.apache.mahout.text.SequenceFilesFromDirectory.java
 5     mahout seq2sparse:将SequenceFile(序列)转成向量文件,对应的源文件是org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles.java 
 6 
 7 
 8     命令: mahout seqdirectory -i /user/hadoop/file1 -o /user/hadoop/file2
 9 
10 
11 查看转化结果:
12 
13     mahout seqdumper:将SequenceFile文件转成文本形式,对应的源文件是org.apache.mahout.utils.SequenceFileDumper.java
14     mahout vectordump:将向量文件转成可读的文本形式,对应的源文件是org.apache.mahout.utils.vectors.VectorDumper.java
15     mahout clusterdump:分析最后聚类的输出结果,对应的源文件是org.apache.mahout.utils.clustering.ClusterDumper.java
16 
17 
18     命令: mahout vectordump -i /user/hadoop/file2 -o /user/hadoop/file3
19     具体每种命令如何用及参数如何选择,在命令行后面加-h或-help可以查看
20 
21 
22 二.数值文件向量化
23 三种数值型向量文件:
24 
25     DenseVector:浮点型数组,存储所有向量,适用于存储密集型向量;
26     RandomAccessSparseVector:基于浮点数的HashMap实现,key:int,value:double,只存储向量中不为空的值,并提供随机访问。
27     SequentialAccessVector:只存储向量中不为空的值,只提供顺序访问。
28 
29 
30     命令:mahout org.apache.mahout.clustering.conversion.InputDriver -i inputfile -o outputfile
文本文件向量化

 

 

mahout 可以再本地模式运行,只需在环境变量加入下面的语句即可

export MAHOUT_LOCAL=true
 
则所用的测试命令都可在本地目录进行,无需上传到hdfs上。本地模式下,下面的问题也不存在。

 

 

3 问题汇集

 

[sms@gc64 ~]$ mahout
MAHOUT_LOCAL is not set; adding HADOOP_CONF_DIR to classpath.
Running on hadoop, using HADOOP_HOME=/home/sms/hadoop
HADOOP_CONF_DIR=/home/sms/hadoop/etc/hadoop
MAHOUT-JOB: /home/sms/mahout-distribution-0.6/mahout-examples-0.6-job.jar
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.util.ProgramDriver.driver([Ljava/lang/String;)V
        at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:116)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:208)


可能的解决方案:
mahout0.9的源码,支持hadoop2,需要自行使用mvn编译。mvn编译使用命令: mvn clean install -Dhadoop2 -Dhadoop.2.version=2.2.0 -DskipTests
http://download.csdn.net/detail/fansy1990/7165957

 

 还没有答案?目前倾向于hadoop与mahout版本冲突造成的。

 

4 参考资料

1  mahout安装测试  http://blog.csdn.net/wind520/article/details/38851367

2  版本问题   http://my.oschina.net/u/1047640/blog/262468

 

posted @ 2016-01-06 15:17  kongmeng  阅读(439)  评论(2编辑  收藏  举报