用Maven创建Mahout环境详细过程
Maven下载
Maven可以去http://maven.apache.org/download.cgi下载
Maven安装
- 解压下载的包文件apache-maven-3.3.9-bin.tar.gz到/usr目录下
- 配置环境变量:
编辑/etc/profile文件,添加如下代码:
#set maven enviroemnt
export MAVEN_HOME=/usr/maven
export PATH=${PATH}:${MAVEN_HOME}/bin
- 保存文件,并运行如下命令使环境变量生效
source /etc/profile
- 在控制台输入如下命令,验证maven是否安装成功
mvn -version
或者mvn -v
出现如下版本信息说明maven安装成功!
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /usr/java/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.el7.x86_64", arch: "amd64", family: "unix"
Maven配置
Maven安装目录下的各文件夹介绍:
- /bin:包含maven运行的脚本
- /boot:包含一个类加载器框架
- /lib:包含所有Maven运行时需要的java类库
/conf:包含重要文件setting.xml
全局配置: ${M2_HOME}/conf/settings.xml用户配置: ${user.home}/.m2/settings.xml
note:用户配置优先于全局配置。
修改maven本地仓库的位置
MAVEN_HOME/conf目录下settings.xml文件是Maven的配置文件,里面有maven本地仓库的位置信息。
Maven 的仓库默认是放在本地用户的临时文件夹下面的 .m2 文件夹下的 repository 下,现在需要修改它到我们自己指定的路径下。
我指定的仓库位置为:/usr/maven/repository目录(后来重新配置的时候没有配置仓库地址啦,如果不配就是默认的路径啦,${user.home}/.m2/repository,配不配应该都没太大的关系)
于是在settings.xml中增加一行:
<localRepository>/usr/maven/repository</localRepository>
配置镜像
参考配置文档 修改镜像文件,修改为国内的镜像源可以加快maven配置过程中文件的下载速度,强烈建议修改镜像,本人之前由于没有修改镜像,导致耽误大量时间!
配置镜像参考博客地址:http://blog.youkuaiyun.com/Wee_Mita/article/details/60317352
一下为几个镜像地址,可以参考选择其一进行配置。
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>ui</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
</mirrors>
到此完成对maven的初步配置,运行命令,下载maven的帮助文件:
mvn help:system
运行该命令后会下载一下pom文件和jar文件,这些文件都被下载到了maven的本地仓库。
执行了好几遍这个命令,终于显示build success了,什么都没改,只是重复执行这个命令,最后就成功了。显示内容如下:
XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME
OLDPWD=/usr/maven/conf
HISTCONTROL=ignoredups
GPG_AGENT_INFO=/run/user/1000/keyring/gpg:0:1
WINDOWPATH=1
HOME=/root
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Vz6oojjs3V,guid=af0183c9143332da97ce40b658e4612a
PWD=/usr/maven/conf
USERNAME=hadoop
XDG_SEAT=seat0
XDG_MENU_PREFIX=gnome-
NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat
GDMSESSION=gnome-classic
USER=hadoop
JAVA_HOME=/usr/java
CLASSPATH=.:/usr/java/lib:/usr/java/jre//lib:
TERM=xterm-256color
MAVEN_CMD_LINE_ARGS= help:system
GDM_LANG=zh_CN.UTF-8
SSH_AGENT_PID=2849
MAVEN_PROJECTBASEDIR=/usr/maven/conf
XDG_VTNR=1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.795 s
[INFO] Finished at: 2017-04-06T15:31:26+08:00
[INFO] Final Memory: 12M/58M
[INFO] ------------------------------------------------------------------------
eclipse安装maven插件
eclipse安装maven插件一共有两种方法:
1.在线安装(我采用线安装成功)
详细的maven在线安装步骤可以参考如下博客:
maven在线安装步骤:http://blog.youkuaiyun.com/u011414200/article/details/48158937
Index downloads are disabled, search results may be incomplete问题解决办法:
http://www.cnblogs.com/AloneSword/p/4146884.html
http://blog.youkuaiyun.com/isea533/article/details/12197127(更新过程需要等待一段时间,耐心等待)
2.link安装方式
安装完毕后可以通过Help > About Eclipse> Installation Details确认已安装的插件。可以看到
这里不再详细说
修改eclipse中的maven地址
windows->preference->Maven:记得勾选红框中的项
这里修改为本机上maven的安装路径:
修改eclipse中的maven的setting文件的路径
创建maven项目
按照如下图片进行创建:
1)
2)
3)
4)
5)这样就创建好了一个maven的工程,但是还有一些地方要修改
6)修改java为自己的java版本:
点击创建的maven项目,右键->java build path->选择上面的libraries->删除原本的JRE1.5->选择右边的Add Library->选择JRE System Library->选择workspace default JRE。
使用Maven创建Mahout项目
双击pom.xml文件,在右边的面板中会出现Dependencies,点击Add,在弹出的对话框中输入mahout,Maven便会搜索相关包,选择mahout-core,确定。
可能会出来无法搜索出来的情况,不用怕,有解决办法。
参考这两个博客进行设置,下载过程中不要着急,耐心等待!http://blog.youkuaiyun.com/isea533/article/details/12197127
http://www.cnblogs.com/AloneSword/p/4146884.html
windows-》show view->maven->maven repositories.
global repositories->右键updata index
global repositories->右键选择full index enabled
耐心等待下载完,这样一般就不会存在搜索不出来的情况了!
编写代码,运行程序
新建一个CF.java,对其进行编辑。尝试写了一个协同过滤推荐算法。完整代码如下:
import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.model.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;
import org.apache.mahout.cf.taste.similarity.*;
import java.io.File;
import java.util.*;
public class CF {
private CF(){};
public static void main(String args[]) throws Exception{
//step:1.build model;2.similarity calculation;3.select neighbor;4.build recommendation system
DataModel model=new FileDataModel(new File("/home/hadoop/intro.csv"));//装载数据文件
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);//对输入数据计算皮尔森相似度
UserNeighborhood neighborhood=new NearestNUserNeighborhood(2,similarity,model);//计算最近邻
Recommender recommender=new GenericUserBasedRecommender(model,neighborhood,similarity);//生成推荐引擎
List<RecommendedItem> recommendations=recommender.recommend(1, 2);//为用户1推荐2个物品
for(RecommendedItem recommendation:recommendations){
System.out.println(recommendation);
}
}
}
输入文件intro.csv文件放在/home/hadoop目录下,文件的内容为
1,101,5
1,102,3
1,103,2.5
2,101,2
2,102,2.5
2,103,5
2,104,2
3,101,2.5
3,104,4
3,105,4.5
3,107,5
4,101,5
4,103,3
4,104,4.5
4,106,4
5,101,4
5,102,3
5,103,2
5,104,4
5,105,3.5
5,106,4
运行程序,选择java application,得到输出结果如下:
可以看到,算法为用户1推荐了两个商品,分别是物品104和物品106。
另外:运行结果中有3行警告,说是slf4j里面的StaticLoggerBinder加载失败,虽说它不影响程序运行结果,但看着实在烦人,解决办法是再次编辑pom.xml的dependencies,添加一个slf4j-nop包即可。
这里参考了博客:http://www.tuicool.com/articles/rmiEz2
博客到这里就结束啦~