分享

Win7+Eclipse+Maven进行Mahout编程,使其兼容Hadoop2.2.0环境运行


问题导读


1.如何在Eclipse下创建Maven工程?
2.如何处理工程打jar包拷贝到集群后报hadoop兼容性异常?









引言之前成功在服务器上为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资源。








欢迎加入about云群90371779322273151432264021 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(3)人评论

跳转到指定楼层
Joker 发表于 2015-1-16 18:02:39
这两天耗费我编译Mahout,有点狗血其中过程,难道论坛也用Hadoop来分析用户行为,在来写一些博文
回复

使用道具 举报

落魂草 发表于 2015-1-16 20:02:55
回复

使用道具 举报

stark_summer 发表于 2015-1-18 10:03:45
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条