笔者我此时是一个完全没用过Mahout的门外汉,对Hadoop也没有实际使用经验,算是真正的零基础。我的目标是希望以最简单的方式搭建起一个Mahout的开发环境,以最快的速度让Mahout工作起来,以方便后续的进一步学习
于是,经过一番折腾,便有了本文。本文记录了 Linux 下Eclipse+Maven+Mahout单机环境的搭建过程。我不知道这是不是最简单的Mahout开发环境,但它应该算得上是比较简单的。
如上图所示,我们可以选择在win中开发,也可以在linux中开发,开发过程我们可以在本地环境进行调试,标配的工具都是Maven和Eclipse。Maven又是什么?这里只需要知道它是一个项目管理工具就行,有了它,可以非常方面的安装Mahout和相关依赖组件。
1. Centos6.5系统 自带版本为 3.6.1的 Eclipse,已经安装的插件如下图
2. 安装 Maven
具体可参考笔者博文 Centos6.5 下 Maven 安装
按照网上的教程就是
1. Help -> Install New Software…
点了上面菜单后,会弹出如下对话框,点击Add按钮,然后输入Name和Location(http://download.eclipse.org/technology/m2e/releases)
2. 在弹出的界面中点击 Add,然后输入 Repository 新地址
“Name”一栏填入 “m2e”
“Location”一栏填入 http://download.eclipse.org/technology/m2e/releases
其中 4 位置的 Available Software Sites 是在出现以下情况时(Duplicate location)再进行操作的
然后按照以下的数字顺序进行操作,删除原有的 Duplicate 然后
选中 m2e 的位置,然后选中 “Disable”,最后再 “Remove”,这样就可以将历史搜索的地址删除
3. 选中所需 m2e 插件进行安装
因为选中了 “Show only the lastest versions of available software”,所以显示的是最新版本的插件(图中显示的1.6.1),如果将其去掉勾选,那么将出现以往版本,如下图
笔者我先使用最新的插件来进行安装
4. 出现 error
错误分析:直接在线安装maven2 会出现依赖插件找不到的问题,无法安装
网上解决方案: 必须先安装gef 插件后才能安装m2eclipse-core 插件,然而安装m2eclipse-extras 插件又依赖subclipse 插件。所以,三个插件的正确的安装顺序是 gef插件 -> subclipse插件 -> m2eclipse插件
(反正笔者我怎么试都失败,于是无奈放弃该方案,但不敢说该方法没用)
根据网上调查的资料,比较可靠的解释是 maven 插件的版本与 eclipse 的版本有冲突,简单的说就是要安装的maven版本相对eclipse版本来说太新了。如果maven是最新的,则提高eclipe版本号;如果maven低, 则降低eclipse版本号
1. 下载最新的 eclipse
在 eclipse 首界面上,选择 Help -> About Eclipse Platform -> http://www.eclipse.org/platform -> Download -> 下载合适的 eclipse 版本
笔者我选择的是 eclipse-SDK-I20150818-0800-linux-gtk-x86_64.tar.gz ,下载地址:http://pan.baidu.com/s/1kTxndB5,密码:n5hb
解压缩到用户目录下,笔者我放在 /home/hadoop/software 目录下
tar -zxvf eclipse-SDK-I20150818-0800-linux-gtk-x86_64.tar.gz
2. 修改环境
如果原始的 eclipse 版本不删除,但又想在终端直接输入 eclipse 调用最新版本的,而不是自带的 eclipse ,那么修改环境变量是最好的选择。
vim ~/.bash_profile
添加如下语句
export PATH=/home/hadoop/software/eclipse:${PATH}
然后
source ~/.bash_profile
在终端 输入 eclipse
,出现如下,即可与说明环境生效
3. 删除软件自带插件
Help -> Install New Software… -> Available Software Sites
将 Neon 等这3个取消勾选,然后 ok 继续(主要为了省时间)
4. 安装 Eclipse Luna 插件
m2e 1.5.0 需要Eclipse Luna. 在 Add 中输入下列地址
http://download.eclipse.org/releases/luna/
然后按图中数字进行设置
检验:Help-> About Eclipse SDK
检验:Help-> Installation Details
5. 在弹出的界面中点击 Add,然后输入 Repository 新地址
m2e
http://download.eclipse.org/technology/m2e/releases
Note:这里必须用 “m2e” 进行过滤,不然全部安装的话,很可能会出现下面的不幸情况
That does not work for me, after installing all libraries from Luna, my Eclipse cannot be started. Loading Eclipse every time fails, I have to uninstall eclipse and reinstall everything again.
补充说明:
还可以安装 Juno, http://download.eclipse.org/releases/juno/201209280900
然后用 m2e 进行过滤,当然还是上面的那个比较好啦~~~
1. 运行Eclipse,通过菜单File > New > Project新建项目,选择Maven Project,然后直接Next
2. 选择maven-archetype-quickstart
3. 输入GroupId和ArtifactId,可以根据自己喜好随便命名
4. 点了Finish后,Eclipse便会创建如下一个工程
Note:
默认使用自带的 J2SE-1.5,需要修改为最新的 jdk
5. 双击pom.xml,在右边的面板中选择Dependencies,点击Add,在弹出的对话框中输入mahout,Maven便会搜索相关包,选择mahout-core,确定
6. 在 eclipse 中搜索相应的 jar 包
“Window” —> “Show View” —> “Maven Repositories” —> “Local Repositories”
choose “Local Repository” click right and “Rebuild Index”
上面是在你的本地 maven 仓库已经下载了相应的东东之后,不然可以采用备选方案
“Window” —> “Show View” —> “Maven Repositories” —> “Global Repositories”
chose “nexus-osc” click right and “Update Index”
接下来直接在下列框中输入 mahout
即可!其他的信息会自动生成,而不用人工生成
7. 在出现的各种 jar 包,选择其中两个 mahout-core 和 mahout-math
选完之后,按 Ctrl+S 进行保存,在左边的 “Package Explorer” 一栏中 Maven Dependencies 会出现很多包,那就说明基本安装成功了。
Note: 如果出现警告
Index downloads are disabled, search results may be incomplete
解决方案:
“Window” –> “Preferences” and choose Maven in the left side.
Now you have to check the box “Download repository index updates on startup”
1. 数据准备:data.csv,存放在 “/home/hadoop/data.csv” 下
第一列为UserID ,第二列为ItemID,第三列为Preference Value 即评分
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
2. 在刚才创建的工程下,选中 App.java
package wang.bigdata.www.mahout.wzf;
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.*;
import java.util.*;
public class App {
private App(){};
public static void main (String args[])throws Exception{
// step:1 2 3 k 4
DataModel model =new FileDataModel(new File("/home/hadoop/data.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);//1ItemID
for(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
}
}
}
最后得到输出结果如下:
可以看到,Mahout为用户1提供了两个推荐商品,分别是104和106
补充:前面的运行结果显示三行红字,说是slf4j里面的StaticLoggerBinder加载失败,虽说它不影响程序运行结果,但看着实在烦人,解决办法是再次编辑pom.xml的dependencies,添加一个slf4j-jcl包即可
零基础学习Mahout之一:搭建单机环境:http://www.cnblogs.com/freefalcon/p/3893590.html?utm_source=tuicool
eclipse中配置maven:http://blog.csdn.net/kjfcpua/article/details/9733829
Eclipse安装Maven插件报错:http://bbs.csdn.net/topics/390824532?page=1
Maven for Eclipse 1.5.0 plugin cannot be installed under Kepler:http://stackoverflow.com/questions/24479109/maven-for-eclipse-1-5-0-plugin-cannot-be-installed-under-kepler
Index downloads are disabled, search results may be incomplete:http://www.cnblogs.com/AloneSword/p/4146884.html
Eclipse Json Editor Plugin:http://sourceforge.net/p/eclipsejsonedit/discussion/957258/thread/51b24003/
用Maven构建Mahout项目:http://blog.fens.me/hadoop-mahout-maven-eclipse/
Maven插件问题在pom.xml的解决:http://my.oschina.net/hanzhankang/blog/132580
Eclipse下mahout实现推荐的简单实例 :http://blog.csdn.net/aidayei/article/details/6626699