mahout 安装测试
1 下载
在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
其它意见
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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