Mahout in Action :Creating a web-enabled recommender in chapter 5
最近老是在想着如果可以使用eclipse调用hadoop集群那该多好呀,这里不是说eclipse调用单个节点。比如,我现在有一个hadoop集群,然后我用eclipse调用这个集群(当然我也有hadoop-eclipse插件),当我的MR程序运行完毕后,可以看到在HDFS上面有运行的文件,但是我针对节点机做性能测试时却发现,在我使用eclipse调用hadoop集群时,三个节点机都没有被调用,而只有主机的资源被用到了。所以应该是没有调用到整个集群,而是完全把MR作为一个java程序运行了。但是HDFS上面的文件也都生成了。
而我最开始的原意是使用web程序和hadoop集群相结合,很简单的一个应用,比如说我在web界面点击一个按钮,然后就调用了整个hadoop集群来运行我的MR程序,但是我发现到目前为止,我还做不到,只能在terminal里面才能调用整个hadoop集群。
然后我就想起来了,当时我看《Mahout in Action》时,上面就有一章说到了web和hadoop的交互,所以就又回去看了,结果却不尽人意。下面我就把整个过程简单说下吧,主要参考下面的实现:https://cwiki.apache.org/MAHOUT/recommender-documentation.html
(1)下载 mahout的源码,解压到一个目录,比如/home/fansy/mahout;
(2)拷贝/home/fansy/mahout/example/src/main/java/org/apache/mahout/cf/taste/example 文件夹到/home/fansy/mahout/integration/src/main/java/org/apache/mahout/cf/taste/目录下;
(3)在下面的网址http://www.grouplens.org/node/12 下载MovieLens_1M ,然后拷贝movies.dat 和ratings.dat到/home/fansy/mahout/integration/src/main/resources/org/apache/mahout/cf/taste/example/下面;
(4)terminal里输入cd /home/fansy/mahout ,接着输入 mvn -DskipTests=true install ,cd integration , mvn jetty:run ,就搞定了(首先确保安装了mvn工具);
User:1Recommender: GroupLensRecommender[recommender:CachingRecommender[recommender:SlopeOneRecommender[weighted:true, stdDevWeighted:true, diffStorage:MemoryDiffStorage]]]Top 20 Preferences:5.015.0485.01505.020285.05275.028045.012705.031055.05955.010285.011935.018365.010295.019615.023555.012875.010355.010224.06084.02791Recommendations:7.321735575.248599535.11776111495.047946510395.032335.01345.05724.98947333384.9753132454.96375625034.91782729314.90624729304.89041954394.8536547874.84284265784.833333521984.82796671284.778878736014.76791220194.764953318但是,这个还不是我想要的结果,还是没有达到最开始的要求,网上也比较少这方面的网页,比如我试图用 run hadoop with tomcat 也搜不到一些比较有用的网页。看过一些论坛,上面说这个启动一般是用shell来的。总之,还在继续探索中。。
分享,成长,快乐