Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2309917
  • 博文数量: 266
  • 博客积分: 5485
  • 博客等级: 大校
  • 技术积分: 3695
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-20 11:05
个人简介

多读书,多做事,广交朋友,趣味丛生

文章分类

全部博文(266)

分类: 大数据

2014-02-21 15:02:29

1. mahout源码下载

cd /usr/local
sudo mkdir mahout
sudo svn co  mahout

2. 安装maven3
cd /tmp
wget 
tar vxzf apache-maven-3.0.2-bin.tar.gz
mv apache-maven-3.0.2 /usr/local/maven

vi ~/.bashrc

添加如下两行
export M3_HOME=/usr/local/maven
export PATH=${M3_HOME}/bin:${PATH}

执行 . ~/.bashrc,使设置生效[或者先logout,之后再login]
查看maven版本,看是否安装成功
mvn -version

3. 安装mahout
cd /usr/local/mahout
mvn install

如果报JAVA_HOME is not set,如果是用sudo,检查root的java设置
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.6/
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
执行. /etc/profile 再执行mvn clean install -DskipTests=true //skip tests,fast build

4. 数据准备
cd /tmp
wget 

hadoop fs -mkdir /testdata
hadoop fs -put synthetic_control.data /testdata
hadoop fs -lsr /testdata

如果报HADOOP_HOME环境变量没有设置
sudo vi /etc/profile,添加
export HADOOP_HOME=/usr/lib/hadoop-0.20/

5. hadoop集群来执行聚类算法
cd /usr/local/mahout

bin/mahout org.apache.mahout.clustering.syntheticcontrol.canopy.Job
bin/mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
bin/mahout org.apache.mahout.clustering.syntheticcontrol.fuzzykmeans.Job
bin/mahout org.apache.mahout.clustering.syntheticcontrol.dirichlet.Job
bin/mahout org.apache.mahout.clustering.syntheticcontrol.meanshift.Job

如果执行成功,在hdfs的/user/dev/output里面应该可以看到输出结果
GroupLens Data Sets
,包括MovieLens Data Sets、Wikilens Data Set、Book-Crossing Data Set、Jester Joke Data Set、EachMovie Data Set

下载1m的rating数据

mkdir 1m_rating
wget 
tar vxzf million-ml-data.tar__0.gz
rm million-ml-data.tar__0.gz

拷贝数据到grouplens代码的目录,我们先本地测试下mahout的威力
cp *.dat /usr/local/mahout/examples/src/main/java/org/apache/mahout/cf/taste/example/grouplens

cd /usr/local/mahout/examples/
执行
mvn -q exec:java -Dexec.mainClass="org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommenderEvaluatorRunner"
如果不想做上面拷贝文件的操作,则指定输入文件位置就行,如下:
mvn -q exec:java -Dexec.mainClass="org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommenderEvaluatorRunner" -Dexec.args="-i input——file"
上传到hdfs
hadoop fs -copyFromLocal 1m_rating/  mahout_input/1mrating

补充

mahout,svn地址:

将lucene索引数据转换成文本向量,指定索引目录~/index 字段名称Name,索引临时输出文件~/dict.txt ,最终结果输出文件路径output.txt,并限制最大向量数目50
$/usr/local/mahout/bin/mahout lucene.vector --dir ~/index --field Name --dictOut ~/dict.txt --output output.txt --max 50 --norm 2

查看下dict的文件内容
$head -n dict.txt
10225
#term doc freq idx
Michale 67 0
medcl 1 1
jack 3 2
lopoo 2 3
003 2 4

由上面的数据可见,dict.txt里面是我们的指定的Name字段的索引信息

使用taste-web来快速构建基于grouplens数据集的电影推荐系统

$cd taste-web/
拷贝grouplens的推荐包到taste-web的lib目录下,如果jar包还没有,转到目录执行mvn install即可
$ cp examples/target/grouplens.jar taste-web/lib/

taste-web]$ vi recommender.properties
取消掉这一行的注释,配置使用grouplens的recommender,如下:
recommender.class=org.apache.mahout.cf.taste.example.grouplens.GroupLensRecommender

启动jetty,如果一切正常,访问8080端口,可以看到有这么个webservice,
mvn jetty:run-war

执行如下命令,查看推荐结果:

阅读(4880) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~