注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

being23

写给未来的自己

 
 
 

日志

 
 
关于我

真正的坚定,就是找到力量去做自己喜欢的事情,并为之努力,这样才会觉得生活是幸福的。

网易考拉推荐

eclipse编译hadoop插件  

2013-06-14 22:57:50|  分类: work@oppo |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

eclipse编译hadoop插件

参考资料

说下系统环境先,hadoop版本1.1.0,下载地址hadoop-1.1.0.tar.gzeclipse版本4.2.0。

具体的编译步骤跟Linux下Hadoop Eclipse插件编译安装提到的几乎一致,有些区别下面说到的时候会提及。整个编译过程,需要修改三个文件,分别位于hadoop根目录下的src/contrib/eclipse-plugin/build.xmlsrc/contrib/build-contrib.xmlsrc\contrib\eclipse-plugin\META-INF\MANIFEST.MF,下面简写成build.xmlbuild-contrib.xmlMANIFEST.MF

  • 导入工程,在build path中添加外部jar包,分别位于根目录以及lib目录下,commons-configuration-1.6.jarcommons-el-1.0.jarhadoop-ant-1.1.0.jarhadoop-client-1.1.0.jar, hadoop-core-1.1.0hadoop-tools-1.1.0.jarjackson-mapper-asl-1.8.8.jar

external_jar

修改build.xml

  • 添加eclipse根目录所在路径和hadoop版本号属性
    <property name="eclipse.home" location="E:/Tools/eclipse-SDK-4.2-win32/eclipse"/>
    <property name="version" value="1.1.0"/>
  • 我们需要引用hadoop的一些包,但是默认的classpath没有这些包(我们没有从头编译)。修改classpath,定位<path id="classpath">,加入
    <fileset dir="${hadoop.root}">
        <include name="**/*.jar" />
    </fileset>
  • 修改includeantruntime设置。定位compile的target,修改javac的设置,加入一个选项includeantruntime="on"
    <javac
         encoding="${build.encoding}"
         srcdir="${src.dir}"
         includes="**/*.java"
         destdir="${build.classes}"
         debug="${javac.debug}"
         deprecation="${javac.deprecation}"
         includeantruntime="on">
    
         <classpath refid="classpath"/>
    </javac>
  • jar打包的时候需要hadoop的一些jar文件,但是我们没有编译生成它,所以我们需要修改一下jar这个target。另外,有几个jar是我们需要用到,而build.xml里面没有自动包含的,如果不包含它们,Eclipse连接Hadoop会出现failure to login错误,其实就是找不到类
    <copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core-1.1.0.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar"  tofile="${build.dir}/lib/commons-cli-1.2.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" tofile="${build.dir}/lib/commons-configuration-1.6.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" tofile="${build.dir}/lib/commons-httpclient-3.0.1.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/commons-lang-2.4.jar" tofile="${build.dir}/lib/commons-lang-2.4.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-core-asl-1.8.8.jar" verbose="true"/>
    <copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" tofile="${build.dir}/lib/jackson-mapper-asl-1.8.8.jar" verbose="true"/>

    这里有别于Linux下Hadoop Eclipse插件编译安装的地方就是tofile="${build.dir}/lib/commons-cli-1.2.jar"之类的是带有版本号(?)的。第一次编译的时候,没有带版本号,在连接hadoop的时候出现了如下错误。

error

修改build-contrib.xml

  • 添加eclipse根目录和hadoop根目录所在路径属性
    <property name="hadoop.root" location="D:/My Documents/My Documents/Downloads/hadoop-1.1.0"/>
    <property name="eclipse.home" location="E:/Tools/eclipse-SDK-4.2-win32/eclipse" />

    这个是需要添加的,细节我不清楚,想必是有些依赖关系在其中。

  • 代码中使用了一些遗留功能,所以我们要修改deprecation的值为on
    <property name="javac.deprecation" value="on"/>

修改MANIFEST.MF

  • 找到Bundle-ClassPath这一行,然后,修改成
    Bundle-ClassPath: classes/,
    lib/commons-cli-1.2.jar, lib/commons-httpclient-3.0.1.jar, lib/hadoop-core-1.1.0.jar, lib/jackson-mapper-asl-1.8.8.jar, lib/commons-configuration-1.6.jar, lib/commons-lang-2.4.jar, lib/jackson-core-asl-1.8.8.jar

    由于上面copy过去的jar包名中带有版本号,所以这里也是带有版本号的。

  • 执行ant,代码就会被编译。

中间碰到的一下问题

  • 提示build.xml<import file="../build-contrib.xml"/>找不到,改成绝对路径后可以
  • 重启eclipse插件无效,带-clean参数重启eclipse
  • 出现错误An internal error occurred during:"Map/Reduce location status updater。在网络上找到这么一篇相关的资料,HOW TO RUN MAPREDUCE PROGRAMS USING ECLIPSE,大意是有些jar包没有打包到插件包里面,需要手动添加,这里的情况与我遇到的不符合,因为通过上述步骤生成的插件包里面是有那些jar包的。后来是像上面说的那样通过添加版本号解决的。
2013-06-14
@深圳坪洲
  评论这张
 
阅读(1781)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017