【甘道夫】Win7+Eclipse+Maven进行Mahout编程,使其兼容Hadoop2.2.0环境运行,mahouthadoop2.2.0
【甘道夫】Win7+Eclipse+Maven进行Mahout编程,使其兼容Hadoop2.2.0环境运行,mahouthadoop2.2.0
引言 之前成功在服务器上为Mahout0.9打patch,使其支持Hadoop2.2.0。 今天的需求是:在Win7+Eclipse+Maven环境下开发Mahout程序,打jar包放到集群上,使其在Hadoop2.2.0下正常运行。过程 步骤一:Eclipse下创建Maven工程 pom.xml: 1.引入mahout依赖 <dependencies>
<dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-core</artifactId> <version>0.9</version> </dependency>
</dependencies>
2.将依赖打进jar包的插件
<build> <plugins>
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>cn.fulong.bigdata.ItemCFHadoop</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
</plugins> </build>
步骤二:关键--将集群上打完patch,编译好的mahout-core-0.9.jar和mahout-math-0.9.jar覆盖windows下maven仓库的对应文件! 我尝试过将打过patch的pom文件拷贝到windows下,然后在windows环境下编译mahout0.9源码,但是行不通,各种报错。 由于mahout-core所依赖的mahout相关jar包只有两个,mahout-core-0.9.jar和mahout-math-0.9.jar,所以我们只需将集群上支持Hadoop2.2.0的这两个jar包覆盖到本地即可。 如果不执行该步骤,工程打jar包拷贝到集群后将报hadoop兼容性异常。
步骤三:打包,在windows环境下工程根目录下执行命令:mvn assembly:assembly 生成的jar包在工程根目录/target/下,名称类似 xxxxx-jar-with-dependencies.jar
步骤四:将jar包拷贝到集群中执行 注意:使用hadoop jar执行,而不是用java jar执行!使用hadoop jar执行才能顺利找到相关的hadoop资源。
mahout 和 hadoop没有啥关系,非得说关系的话,你得弄清二者是干啥的
mahout是一个机器学习算法库,人家是做一些经典的机器学习的算法实现的;
hadoop是一个开源的分布式的数据处理引擎(HadoopV1来说,是MapReduce),人家很多时候是做大规模数据处理的;
所以,Mahout上的一些算法支持用mapreduce的编程模型实现,所以就可以运行在Hadoop平台上;
这样说你就可以明白了吧,二者不是一个层级上的东西,所发挥的作用也是不一样的,而且你运行的实例的确也没有用到Hadoop。。。
在eclipse中,如果你设置了下载依赖的源代码,当你查看class时,eclipse会自动调用maven下载源代码并在eclipse中打开
你的这个问题似乎是连不上central仓库,检查网络看看
评论暂时关闭