zoukankan      html  css  js  c++  java
  • hadoop eclipse插件生成

    hadoop eclipse插件生成

    做了一年的hadoop开发。还没有自动生成过eclipse插件,一直都是在网上下载别人的用,今天有时间,就把这段遗憾补回来,自己生成一下,废话不说,開始了。

    本文着重介绍Eclipse插件的生成、配置过程、常见错误的解放方法以及使用Eclipse插件測试执行wordcount演示样例。

    一、环境说明

    本列中的hadoop eclipse插件通过eclipse生成(未使用命令生成是由于用命令生成插件过程中发生的一些问题。不easy查看和改动,用eclipse非常直观,方便出错校正),当中hadoop版本号为 1.2.1(stable版)。操作系统为Centos。IDE为myeclipse 2013(用eclipse也一样。没差别)。

    下面的HADOOP_HOME表示hadoop的安装文件夹。


    二、插件生成

    1.将$HADOOP_HOME/src/contrib/eclipse-plugin导入eclipseproject

    本例中将/opt/hadoop-1.2.1/src/contrib/eclipse-plugin文件夹导入eclipse。


    如加入完毕后的项目名称为“MapReduceTools”。例如以下图:



    2.把hadoop-core-1.2.1.jar增加环境变量

    右击项目——>build path——>configure buildpath,将现有的hadoop-core jar包删除(默认增加的包。已不在classpath中)。然后将$HADOOP_HOME/hadoop-core-1.2.1.jar增加classpath。



    3.改动各项配置文件:

    (1).改动build.properties:

    增加eclipse的安装文件夹和hadoop版本。參考内例如以下

    eclipse.home = 你的eclipse安装文件夹
    version = 你的hadoop版本

    个人改动后的文件内如例如以下:

    #add by jack zhu
    eclipse.home = /opt/myeclipse-2013
    version = 1.2.1
    #add by jack zhu
    
    output.. = bin/
    bin.includes = META-INF/,plugin.xml,resources/,classes/,classes/,lib/
                   plugin.xml,
                   resources/,
                   classes/,
                   classes/,
                   lib/

    (2).改动build.xml:

    该文件需改动三处。參考例如以下。当中改动的地方均位于两个“<!--add by zhu-->”标记的中间:

    <project default="jar" name="eclipse-plugin">
    
      <import file="../build-contrib.xml"/>
    
      <path id="eclipse-sdk-jars">
        <fileset dir="${eclipse.home}/plugins/">
          <include name="org.eclipse.ui*.jar"/>
          <include name="org.eclipse.jdt*.jar"/>
          <include name="org.eclipse.core*.jar"/>
          <include name="org.eclipse.equinox*.jar"/>
          <include name="org.eclipse.debug*.jar"/>
          <include name="org.eclipse.osgi*.jar"/>
          <include name="org.eclipse.swt*.jar"/>
          <include name="org.eclipse.jface*.jar"/>
    
          <include name="org.eclipse.team.cvs.ssh2*.jar"/>
          <include name="com.jcraft.jsch*.jar"/>
        </fileset> 
      </path>
    
    	<!--add by zhu(1)-->
    	<path id="hadoop-lib-jars">
    		<fileset dir="${hadoop.root}/">
    			<include name="hadoop-*.jar"/>
    		</fileset>
    	</path>
    	<!--add by zhu-->
    	
      <!-- Override classpath to include Eclipse SDK jars -->
      <path id="classpath">
        <pathelement location="${build.classes}"/>
        <pathelement location="${hadoop.root}/build/classes"/>
        <path refid="eclipse-sdk-jars"/>
      	<!--add by zhu(2)-->
      	<path refid="hadoop-lib-jars"/>
      	<!--add by zhu-->
      </path>
    
      <!-- Skip building if eclipse.home is unset. -->
      <target name="check-contrib" unless="eclipse.home">
        <property name="skip.contrib" value="yes"/>
        <echo message="eclipse.home unset: skipping eclipse plugin"/>
      </target>
    
     <target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">
        <echo message="contrib: ${name}"/>
        <javac
         encoding="${build.encoding}"
         srcdir="${src.dir}"
         includes="**/*.java"
         destdir="${build.classes}"
         debug="${javac.debug}"
         deprecation="${javac.deprecation}">
         <classpath refid="classpath"/>
        </javac>
      </target>
    
      <!-- Override jar target to specify manifest -->
      <target name="jar" depends="compile" unless="skip.contrib">
        <mkdir dir="${build.dir}/lib"/>
      	<!--add by zhu(3)-->
        <copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
      	<copy file="${hadoop.root}/lib/commons-cli-1.2.jar" todir="${build.dir}/lib" verbose="true"/>
      	<copy file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
      	<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
      	<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
      	<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
      	<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
      	<!--add by zhu-->
        <jar
          jarfile="${build.dir}/hadoop-${name}-${version}.jar"
          manifest="${root}/META-INF/MANIFEST.MF">
          <fileset dir="${build.dir}" includes="classes/ lib/"/>
          <fileset dir="${root}" includes="resources/ plugin.xml"/>
        </jar>
      </target>
    
    </project>
    注:以上文件内容可直接拷贝过去使用,没有不论什么差别。

    (3).改动META-INF/MANIFEST.MF文件:

    在该文件里增加上面步骤(2)的第三步中增加的jar包:lib/hadoop-core.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,lib/jackson-mapper-asl-1.8.8.jar

    该文件内容參考例如以下:

    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: MapReduce Tools for Eclipse
    Bundle-SymbolicName: org.apache.hadoop.eclipse;singleton:=true
    Bundle-Version: 0.18
    Bundle-Activator: org.apache.hadoop.eclipse.Activator
    Bundle-Localization: plugin
    Require-Bundle: org.eclipse.ui,
     org.eclipse.core.runtime,
     org.eclipse.jdt.launching,
     org.eclipse.debug.core,
     org.eclipse.jdt,
     org.eclipse.jdt.core,
     org.eclipse.core.resources,
     org.eclipse.ui.ide,
     org.eclipse.jdt.ui,
     org.eclipse.debug.ui,
     org.eclipse.jdt.debug.ui,
     org.eclipse.core.expressions,
     org.eclipse.ui.cheatsheets,
     org.eclipse.ui.console,
     org.eclipse.ui.navigator,
     org.eclipse.core.filesystem,
     org.apache.commons.logging
    Eclipse-LazyStart: true
    Bundle-ClassPath: classes/,
     lib/hadoop-core.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.0.1.jar,lib/commons-lang-2.4.jar,lib/jackson-core-asl-1.8.8.jar,lib/jackson-mapper-asl-1.8.8.jar
    Bundle-Vendor: Apache Hadoop
    
    注:以上文件内容可直接拷贝过去使用。没有不论什么差别。



    4.在build.xml中运行ant进行编译和打包:

    在该页面右击——>Run As Ant Build


    假设一切顺利的话。ant 编译打包完毕后,将会在$HADOOP_HOME/contrib/eclipse-plugin文件夹下生成hadoop-eclipse-plugin-1.2.1.jar



    5.将刚生成的jar包放入eclipse的安装文件夹下的dropins文件夹下,然后重新启动eclipse


    三、Eclipse插件配置

    先确保自己已把Eclipse插件放入Eclipse下的插件包中,并重新启动Eclipse。

    1.配置Eclipse插件

    进入 Eclipse 后。依照下面步骤进行设置 :在菜单条中依次单击“Window”→“Show View”→“Other...” ,在对话框中依次单击“MapReduce Tools”→“Map/Reduce Locations” ,
    会弹出例如以下图 所看到的的对话框,按图中提示填写内容。


    经上述步骤后。回到主界面。可在“Project Explore”视图中查看分布式文件系统的内容,如显演示样例如以下图所看到的的内容。说明 Eclipse 插件成功安装。




    四、常见错误解决

    1.Call to localhost/127.0.0.1:9000 failed on local exception: java.io.EOFException

    这是用于Hadoop Eclipse插件和Hadoop集群版本号不一致,或者说插件有问题,解决方法就是依照本文的步骤,自己生成一个Eclipse插件。

    2.java.net.NoRouteToHostException:No route to host

    这是由于该port(9000)拒绝连接,解决方法见:

    http://blog.csdn.net/zhu_xun/article/details/41115389


    五、新建Map/Reduceproject

    新建一个 MapReduce project。在菜单条中,依次单击“New”→“Other...”→“MapReduce Project” 。会弹出例如以下图所看到的的对话框。在该对话框中填写项目名称,并配
    置 Hadoop 安装文件夹




    六、測试执行MapReduce作业

    1.准备数据。例如以下图所看到的。在 HDFS 上创建文件夹 /test/input,并上传几个文本文件到该文件夹中。

    准备 MapReduce 作业。可直接将 Hadoop 源码中 srcexamplesorgapachehadoopexamples 文件夹下的 WordCount.java 拷贝到新建的 MapReduceJobs project中。

    配置输入 / 输出路径。如图下所看到的,在 WordCount.java 中右击。在弹出的快捷菜单中依次单击“Run As”→“Run Configurations...” ,会出现图 1-17 所看到的的对话框。


    击“Java Applications”选项,在新建的对话框中输入作业的输入 / 输出路径(中间用空格分隔) ,并单击“Apply”button保存

    执行作业。在 WordCount.java 中右击,在弹出的快捷菜单中依次单击“Run As”→“Run on Hadoop” ,会出现例如以下图所看到的的对话框。按图中的提示选择后,单击“Finish”button,作业開始执行。



    假设不想自己生成,能够下载我生成的hadoop eclipse 插件

    http://download.csdn.net/detail/u012875880/8154149


  • 相关阅读:
    [leetcode] Maximum Depth of Binary Tree
    [leetcode] Binary Tree Zigzag Level Order Traversal
    [leetcode] Binary Tree Level Order Traversal
    软工第二次极限测试
    动手动脑的问题以及课后实验性的问题3
    计算几何--半平面交与平面区域
    拉格朗日插值法
    计算几何--最小圆覆盖与最小球覆盖
    计算几何--圆与球
    程序员修炼之道读后感1
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6881275.html
Copyright © 2011-2022 走看看