hadoop2.5.2 eclipse 插件编译

原文地址:http://aub.iteye.com/blog/2162155

插件地址:https://github.com/winghc/hadoop2x-eclipse-plugin

 
 1.下载并解压hadoop2.x,下载地址http://hadoop.apache.org/releases.html#Download(我下载的是编译好的包)
 2.下载并解压eclipse(我的是4.4.1版本,其他的版本类似)
 3.下载hadoop2x-eclipse-plugin插件并解压自己喜欢的目录,为了方便表达,我暂时叫他"H2EP_HOME"
 4.插件编译需要ant工具,下载地址http://ant.apache.org/bindownload.cgi
    配置好ANT_HOME环境变量,指向ant解压地址,配置PATH环境变量,增加%ANT_HOME%\bin(linux环境类似)
 5.打开命令行工具,进入“H2EP_HOME”目录;
 6.执行ant jar -Dversion=2.x.x -Dhadoop.version=2.x.x -Declipse.home=/opt/eclipse -Dhadoop.home=/usr/share/hadoop
   eclipse.home配置成eclipse安装目录
   hadoop.home配置成hadoop的解压目录
   将2.x.x修改成对应的hadoop的版本号
   
 7.命令行在ivy-resolve-common处卡了
   原因是找不到几个依赖包,那几个依赖包可能是换路径了,其实不需要这几个依赖包也可以
   解决方案:
   修改"H2EP_HOME"\src\contrib\eclipse-plugin\build.xml
   找到:

Xml代码   收藏代码
  1. <target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">  

    去掉depends修改为

Xml代码   收藏代码
  1. <target name="compile" unless="skip.contrib">  

 8.再次执行第6步的编译命令,会提示copy不到相关jar包的错误,
    解决方案:
    修改"H2EP_HOME"\ivy\libraries.properties文件,
    将报错的jar包版本号跟换成与"HADOOP_HOME"\share\hadoop\common\lib下面jar对应的版本号
    此步可能会有多个jar包版本不匹配,需要多次修改
 9.再次执行第6步的编译命令,执行成功
    在"H2EP_HOME"\build\contrib\eclipse-plugin下生成hadoop-eclipse-plugin-2.x.x.jar插件
 10.将hadoop-eclipse-plugin-2.x.x.jar放到eclipse的plugins目录下,启动eclipse
 11.打开window===>prefernces,找到Hadoop Map/Reduce选项卡
  配置hadoop installation directory目录,指向hadoop的安装目录
 12.打开window====>show view====>other,找到Map/Reduce Locations,使其显示
 13.在Map/Reduce Locations中右键=====>new hadoop locations,
  此时没反应,查看eclipse日志(工作空间\.metadata\.log),发现报错:

Java代码   收藏代码
  1. java.lang.ClassNotFoundException: org.apache.commons.collections.map.UnmodifiableMap    

  解决方案:
  修改"H2EP_HOME"\src\contrib\eclipse-plugin\build.xml
  增加:

Java代码   收藏代码
  1. "${hadoop.home}/share/hadoop/common/lib/commons-collections-${commons-collections.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  

   标签增加

Xml代码   收藏代码
  1. lib/commons-collections-${commons-collections.version}.jar,  

 14.执行 eclipse.exe -clean(清理一下缓存,不然有可能还是出现13步的问题)启动eclipse


 完整的build.xml如下("H2EP_HOME"\src\contrib\eclipse-plugin\build.xml)

Xml代码   收藏代码
  1. xml version="1.0" encoding="UTF-8" standalone="no"?>  
  2.   
  3.   
  4.   <path id="classpath">  
  5.     <pathelement location="${build.classes}"/>  
  6.       
  7.     <path refid="eclipse-sdk-jars"/>  
  8.     <path refid="hadoop-sdk-jars"/>  
  9.   path>  
  10.   
  11.     
  12.   <target name="check-contrib" unless="eclipse.home">  
  13.     <property name="skip.contrib" value="yes"/>  
  14.     <echo message="eclipse.home unset: skipping eclipse plugin"/>  
  15.   target>  
  16.   
  17.    
  18.    
  19.  <target name="compile"  unless="skip.contrib">  
  20.     <echo message="contrib: ${name}"/>  
  21.     <javac  
  22.      encoding="${build.encoding}"  
  23.      srcdir="${src.dir}"  
  24.      includes="**/*.java"  
  25.      destdir="${build.classes}"  
  26.      debug="${javac.debug}"  
  27.      deprecation="${javac.deprecation}">  
  28.      <classpath refid="classpath"/>  
  29.     javac>  
  30.   target>  
  31.   
  32.     
  33.   <target name="jar" depends="compile" unless="skip.contrib">  
  34.     <mkdir dir="${build.dir}/lib"/>  
  35.     <copy  todir="${build.dir}/lib/" verbose="true">  
  36.           <fileset dir="${hadoop.home}/share/hadoop/mapreduce">  
  37.            <include name="hadoop*.jar"/>  
  38.           fileset>  
  39.     copy>  
  40.     <copy  todir="${build.dir}/lib/" verbose="true">  
  41.           <fileset dir="${hadoop.home}/share/hadoop/common">  
  42.            <include name="hadoop*.jar"/>  
  43.           fileset>  
  44.     copy>  
  45.     <copy  todir="${build.dir}/lib/" verbose="true">  
  46.           <fileset dir="${hadoop.home}/share/hadoop/hdfs">  
  47.            <include name="hadoop*.jar"/>  
  48.           fileset>  
  49.     copy>  
  50.     <copy  todir="${build.dir}/lib/" verbose="true">  
  51.           <fileset dir="${hadoop.home}/share/hadoop/yarn">  
  52.            <include name="hadoop*.jar"/>  
  53.           fileset>  
  54.     copy>  
  55.   
  56.     <copy  todir="${build.dir}/classes" verbose="true">  
  57.           <fileset dir="${root}/src/java">  
  58.            <include name="*.xml"/>  
  59.           fileset>  
  60.     copy>  
  61.   
  62.   
  63.   
  64.     <copy file="${hadoop.home}/share/hadoop/common/lib/protobuf-java-${protobuf.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  65.     <copy file="${hadoop.home}/share/hadoop/common/lib/log4j-${log4j.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  66.     <copy file="${hadoop.home}/share/hadoop/common/lib/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  67.     <copy file="${hadoop.home}/share/hadoop/common/lib/commons-configuration-${commons-configuration.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  68.     <copy file="${hadoop.home}/share/hadoop/common/lib/commons-lang-${commons-lang.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  69.       
  70.     <copy file="${hadoop.home}/share/hadoop/common/lib/commons-collections-${commons-collections.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  71.     <copy file="${hadoop.home}/share/hadoop/common/lib/jackson-core-asl-${jackson.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  72.     <copy file="${hadoop.home}/share/hadoop/common/lib/jackson-mapper-asl-${jackson.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  73.     <copy file="${hadoop.home}/share/hadoop/common/lib/slf4j-log4j12-${slf4j-log4j12.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  74.     <copy file="${hadoop.home}/share/hadoop/common/lib/slf4j-api-${slf4j-api.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  75.     <copy file="${hadoop.home}/share/hadoop/common/lib/guava-${guava.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  76.     <copy file="${hadoop.home}/share/hadoop/common/lib/hadoop-auth-${hadoop.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  77.     <copy file="${hadoop.home}/share/hadoop/common/lib/commons-cli-${commons-cli.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  78.     <copy file="${hadoop.home}/share/hadoop/common/lib/netty-${netty.version}.jar"  todir="${build.dir}/lib" verbose="true"/>  
  79.   
  80.     <jar  
  81.       jarfile="${build.dir}/hadoop-${name}-${version}.jar"  
  82.       manifest="${root}/META-INF/MANIFEST.MF">  
  83.       <manifest>  
  84.      <attribute name="Bundle-ClassPath"   
  85.         value="classes/,   
  86.  lib/hadoop-mapreduce-client-core-${hadoop.version}.jar,  
  87.  lib/hadoop-mapreduce-client-common-${hadoop.version}.jar,  
  88.  lib/hadoop-mapreduce-client-jobclient-${hadoop.version}.jar,  
  89.  lib/hadoop-auth-${hadoop.version}.jar,  
  90.  lib/hadoop-common-${hadoop.version}.jar,  
  91.  lib/hadoop-hdfs-${hadoop.version}.jar,  
  92.  lib/protobuf-java-${protobuf.version}.jar,  
  93.  lib/log4j-${log4j.version}.jar,  
  94.  lib/commons-cli-1.2.jar,  
  95.  lib/commons-configuration-1.6.jar,  
  96.  lib/commons-httpclient-3.1.jar,  
  97.    
  98.  lib/commons-lang-${commons-lang.version}.jar,  
  99.    
  100.  lib/commons-collections-${commons-collections.version}.jar,  
  101.  lib/jackson-core-asl-1.8.8.jar,  
  102.  lib/jackson-mapper-asl-1.8.8.jar,  
  103.  lib/slf4j-log4j12-1.7.5.jar,  
  104.  lib/slf4j-api-1.7.5.jar,  
  105.  lib/guava-${guava.version}.jar,  
  106.  lib/netty-${netty.version}.jar"/>  
  107.      manifest>  
  108.       <fileset dir="${build.dir}" includes="classes/ lib/"/>  
  109.         
  110.       <fileset dir="${root}" includes="resources/ plugin.xml"/>  
  111.     jar>  
  112.   target>  
  113.   
  114. project>  

你可能感兴趣的:(Hadoop&云)